git-multi 0.1.0

A CLI tool for managing multiple Git remotes and syncing content between them
use thiserror::Error;

#[derive(Debug, Error)]
#[allow(dead_code)]
pub enum GitMultiError {
    #[error("Git error: {0}")]
    GitError(#[from] git2::Error),

    #[error("IO error: {0}")]
    IoError(#[from] std::io::Error),

    #[error("Config error: {0}")]
    ConfigError(String),

    #[error("Toml serialization error: {0}")]
    TomlSerializeError(#[from] toml::ser::Error),

    #[error("Toml deserialization error: {0}")]
    TomlDeserializeError(#[from] toml::de::Error),

    #[error("Dialoguer error: {0}")]
    DialoguerError(#[from] dialoguer::Error),

    #[error("Remote '{0}' not found")]
    RemoteNotFound(String),

    #[error("Remote '{0}' already exists")]
    RemoteAlreadyExists(String),

    #[error("Branch '{0}' not found")]
    BranchNotFound(String),

    #[error("No remotes configured")]
    NoRemotesConfigured,

    #[error("Destination branch '{0}' already exists. Use --force to overwrite.")]
    BranchExists(String),

    #[error("Sync failed: {0}")]
    SyncError(String),

    #[error("No commits to sync in range: {0}")]
    NoCommitsInRange(String),

    #[error("Conflict detected during sync. Resolve manually.")]
    SyncConflict,

    #[error("User cancelled operation")]
    UserCancelled,
}

pub type Result<T> = std::result::Result<T, GitMultiError>;