use std::io;
use std::path::PathBuf;
use thiserror::Error;
pub type Result<T> = std::result::Result<T, SetupError>;
#[derive(Error, Debug)]
pub enum SetupError {
#[error("I/O error: {0}")]
Io(#[from] io::Error),
#[error("File already exists: {path}. Use --force to overwrite")]
FileExists { path: PathBuf },
#[error("Invalid architecture type: '{0}'. Currently supported: 'clean'")]
InvalidArchitecture(String),
#[error("Git operation failed: {0}")]
Git(String),
#[error("{0}")]
Other(String),
}