use std::io; use thiserror::Error; #[derive(Error, Debug)] pub enum Error { #[error("an io error occurred: {0:?}")] Io(#[from] io::Error), #[error("cargo exited with a status of {0}")] ExitStatus(i32), #[error("the directory being created already exists")] DirAlreadyExists, #[error("cargo produced an unparsable stream of data")] FailParseCargoStream, #[error("no build artifact was produced by cargo")] NoBuildArtifact, #[error("provided ISO is not in the GCM format")] InvalidGcm, #[error("no such iso id exists.")] NoSuchIso, #[error("MexTK installation could not be found. Install it to {0}.")] NoMextkInstalled(String), #[error("MexTK .NET core installation found, but `dotnet` has not been added to path.")] NoDotNet, #[error("A network error occurred while attempting to download required files")] NetworkError, #[error("A `Mextk.toml` file could not be found in the current directory")] NoMexToml, #[error("The project's `Mextk.toml` file is improperly formatted")] InvalidToml(toml::de::Error), #[error("The project's `Mextk.toml` is missing a dat name. ")] NoDatName, #[error("The ISO's dol file could not successfully be patched.")] DolPatchFail, #[error("A file within the ISO could not successfully be patched to add m-ex.")] PatchFailed, #[error("The `symbols` key in your Mextk.toml is invalid.")] InvalidSymbolName, }