governor-application 2.0.3

Application use cases and machine contracts for cargo-governor
Documentation
//! Shared application errors.

use governor_core::traits::{
    checkpoint_store::StoreError, registry::RegistryError, source_control::ScmError,
};

/// Result type for governor application use cases.
pub type ApplicationResult<T> = std::result::Result<T, ApplicationError>;

/// Application-layer error.
#[derive(Debug, thiserror::Error)]
pub enum ApplicationError {
    /// Invalid user input.
    #[error("invalid arguments: {0}")]
    InvalidArguments(String),

    /// Workspace adapter error.
    #[error("workspace error: {0}")]
    Workspace(String),

    /// Source control adapter error.
    #[error("source control error: {0}")]
    SourceControl(#[from] ScmError),

    /// Registry adapter error.
    #[error("registry error: {0}")]
    Registry(#[from] RegistryError),

    /// Checkpoint adapter error.
    #[error("checkpoint error: {0}")]
    Checkpoint(#[from] StoreError),

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