use thiserror::Error;

#[derive(Debug, Error)]
pub enum RobotError {
    #[error("ROBOT not found on PATH. Install from https://github.com/ontodev/robot/releases")]
    NotFound,

    #[error("failed to run ROBOT: {0}")]
    Io(#[from] std::io::Error),

    #[error("ROBOT exited with status {code}: {stderr}")]
    Failed { code: i32, stderr: String },

    #[error("{0}")]
    Run(String),
}

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