helen 0.1.0

Repository review gate.
Documentation
//! Elenchus error surface.

/// Elenchus error with an explicit shell-compatible exit code.
#[derive(Debug, thiserror::Error)]
#[error("{message}")]
pub(super) struct ElenchusError {
    /// Exit code expected by existing elenchus callers.
    pub(super) code: u8,
    /// Human-readable diagnostic.
    message: String,
}

impl ElenchusError {
    /// Builds an ordinary gate failure.
    pub(super) fn failure(message: impl Into<String>) -> Self {
        Self {
            code: 1,
            message: message.into(),
        }
    }

    /// Builds a usage or environment failure.
    pub(super) fn usage(message: impl Into<String>) -> Self {
        Self {
            code: 2,
            message: message.into(),
        }
    }
}

/// Elenchus result alias.
pub(super) type Result<T> = std::result::Result<T, ElenchusError>;