espup 0.7.0

Tool for installing and maintaining Espressif Rust ecosystem.
Documentation
//! Custom error implementations.

#[derive(Debug, miette::Diagnostic, thiserror::Error)]
pub enum Error {
    #[diagnostic(code(espup::toolchain::create_directory))]
    #[error("Creating directory '{0}' failed")]
    CreateDirectory(String),

    #[diagnostic(code(espup::toolchain::rust::query_github))]
    #[error("Failed to query GitHub API")]
    GithubQuery,

    #[diagnostic(code(espup::toolchain::rust::install_riscv_target))]
    #[error("Failed to Install RISC-V targets for '{0}' toolchain")]
    InstallRiscvTarget(String),

    #[diagnostic(code(espup::ivalid_destination))]
    #[error(
        "Invalid export file destination: '{0}'. Please, use an absolute or releative path (including the file and its extension)")]
    InvalidDestination(String),

    #[diagnostic(code(espup::toolchain::rust::invalid_version))]
    #[error(
        "Invalid toolchain version '{0}'. Verify that the format is correct: '<major>.<minor>.<patch>.<subpatch>' or '<major>.<minor>.<patch>', and that the release exists in https://github.com/esp-rs/rust-build/releases")]
    InvalidVersion(String),

    #[error(transparent)]
    IoError(#[from] std::io::Error),

    #[diagnostic(code(espup::toolchain::rust::missing_rust))]
    #[error("Rust is not installed. Please, install Rust via rustup: https://rustup.rs/")]
    MissingRust,

    #[diagnostic(code(espup::remove_directory))]
    #[error("Failed to remove '{0}'")]
    RemoveDirectory(String),

    #[error(transparent)]
    RewquestError(#[from] reqwest::Error),

    #[diagnostic(code(espup::toolchain::rust::rustup_detection_error))]
    #[error("Error detecting rustup: {0}")]
    RustupDetection(String),

    #[diagnostic(code(espup::toolchain::rust::serialize_json))]
    #[error("Failed to serialize json from string")]
    SerializeJson,

    #[diagnostic(code(espup::toolchain::rust::uninstall_riscv_target))]
    #[error("Failed to uninstall RISC-V target")]
    UninstallRiscvTarget,

    #[diagnostic(code(espup::toolchain::unsupported_file_extension))]
    #[error("Unsuported file extension: '{0}'")]
    UnsuportedFileExtension(String),

    #[diagnostic(code(espup::host_triple::unsupported_host_triple))]
    #[error("Host triple '{0}' is not supported")]
    UnsupportedHostTriple(String),

    #[diagnostic(code(espup::targets::unsupported_target))]
    #[error("Target '{0}' is not supported")]
    UnsupportedTarget(String),

    #[diagnostic(code(espup::toolchain::rust::rust))]
    #[error("Failed to install 'rust' component of Xtensa Rust")]
    XtensaRust,

    #[diagnostic(code(espup::toolchain::rust::rust_src))]
    #[error("Failed to install 'rust-src' component of Xtensa Rust")]
    XtensaRustSrc,
}