proto_core 0.55.5

Core proto APIs.
Documentation
use super::locate_error::ProtoLocateError;
use crate::layout::ProtoLayoutError;
use starbase_styles::{Style, Stylize};
use starbase_utils::fs::FsError;
use starbase_utils::json::JsonError;
use thiserror::Error;

#[derive(Error, Debug, miette::Diagnostic)]
pub enum ProtoLinkError {
    #[diagnostic(transparent)]
    #[error(transparent)]
    Fs(#[from] Box<FsError>),

    #[diagnostic(transparent)]
    #[error(transparent)]
    Json(#[from] Box<JsonError>),

    #[diagnostic(transparent)]
    #[error(transparent)]
    Layout(#[from] Box<ProtoLayoutError>),

    #[diagnostic(transparent)]
    #[error(transparent)]
    Locate(#[from] Box<ProtoLocateError>),

    #[diagnostic(code(proto::link::failed_args_parse))]
    #[error("Failed to parse shim arguments string {}.", .args.style(Style::Shell))]
    FailedArgsParse {
        args: String,
        #[source]
        error: Box<shell_words::ParseError>,
    },
}

impl From<FsError> for ProtoLinkError {
    fn from(e: FsError) -> ProtoLinkError {
        ProtoLinkError::Fs(Box::new(e))
    }
}

impl From<JsonError> for ProtoLinkError {
    fn from(e: JsonError) -> ProtoLinkError {
        ProtoLinkError::Json(Box::new(e))
    }
}

impl From<ProtoLayoutError> for ProtoLinkError {
    fn from(e: ProtoLayoutError) -> ProtoLinkError {
        ProtoLinkError::Layout(Box::new(e))
    }
}

impl From<ProtoLocateError> for ProtoLinkError {
    fn from(e: ProtoLocateError) -> ProtoLinkError {
        ProtoLinkError::Locate(Box::new(e))
    }
}