scriba 0.1.0

CLI text rendering, prompts, and terminal output utilities
Documentation
use thiserror::Error;

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

#[derive(Debug, Error)]
pub enum ScribaError {
    #[error("interactive prompt required")]
    InteractiveRequired,

    #[error("prompt cancelled")]
    PromptCancelled,

    #[error("prompt failed: {0}")]
    Prompt(String),

    #[error("render failed: {0}")]
    Render(String),

    #[error("serialization failed: {0}")]
    Serialization(String),

    #[error("io failed: {0}")]
    Io(String),
}

impl From<std::io::Error> for ScribaError {
    fn from(err: std::io::Error) -> Self {
        Self::Io(err.to_string())
    }
}

impl From<serde_json::Error> for ScribaError {
    fn from(err: serde_json::Error) -> Self {
        Self::Serialization(err.to_string())
    }
}