proto_core 0.55.5

Core proto APIs.
Documentation
#![allow(unused_assignments)]

use starbase_styles::{Style, Stylize};
use starbase_utils::fs::FsError;
use std::path::PathBuf;
use thiserror::Error;

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

    #[diagnostic(code(proto::checksum::minisign))]
    #[error("Failed to verify minisign checksum.")]
    Minisign {
        #[source]
        error: Box<minisign_verify::Error>,
    },

    #[diagnostic(code(proto::checksum::sha))]
    #[error("Failed to verify SHA checksum.")]
    Sha {
        #[source]
        error: Box<FsError>,
    },

    #[diagnostic(code(proto::checksum::missing_public_key))]
    #[error(
        "A {} is required to verify this tool. This setting must be implemented in the plugin.", "checksum_public_key".style(Style::Property)
    )]
    MissingPublicKey,

    #[diagnostic(
        code(proto::checksum::unknown_algorithm),
        help = "Try using a more explicit file extension."
    )]
    #[error(
        "Unknown checksum algorithm. Unable to derive from {}.",
        .path.style(Style::Path)
    )]
    UnknownAlgorithm { path: PathBuf },

    #[diagnostic(code(proto::checksum::unsupported_algorithm))]
    #[error(
        "Unsupported checksum algorithm {}.",
        .algo.style(Style::Symbol)
    )]
    UnsupportedAlgorithm { algo: String },
}

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