Merge pull request #120 from mgattozzi/error-error-on-the-wall-whats-the-deal-with-them-all
feat(error_msg): Make custom module for errorsmaster
commit
4e98b4262d
@ -0,0 +1,57 @@ |
||||
//! Code related to error handling for wasm-pack
|
||||
use serde_json; |
||||
use std::borrow::Cow; |
||||
use std::io; |
||||
use toml; |
||||
|
||||
#[derive(Debug, Fail)] |
||||
pub enum Error { |
||||
/// Maps any underlying I/O errors that are thrown to this variant
|
||||
#[fail(display = "{}", _0)] |
||||
Io(#[cause] io::Error), |
||||
#[fail(display = "{}", _0)] |
||||
SerdeJson(#[cause] serde_json::Error), |
||||
#[fail(display = "{}", _0)] |
||||
SerdeToml(#[cause] toml::de::Error), |
||||
#[fail(display = "{}. stderr:\n\n{}", message, stderr)] |
||||
Cli { message: String, stderr: String }, |
||||
} |
||||
|
||||
impl Error { |
||||
pub fn cli(message: &str, stderr: Cow<str>) -> Result<(), Self> { |
||||
Err(Error::Cli { |
||||
message: message.to_string(), |
||||
stderr: stderr.to_string(), |
||||
}) |
||||
} |
||||
|
||||
pub fn error_type(&self) -> String { |
||||
match self { |
||||
Error::Io(_) => "There was an I/O error. Details:\n\n", |
||||
Error::SerdeJson(_) => "There was an JSON error. Details:\n\n", |
||||
Error::SerdeToml(_) => "There was an TOML error. Details:\n\n", |
||||
Error::Cli { |
||||
message: _, |
||||
stderr: _, |
||||
} => "There was an error while calling another CLI tool. Details:\n\n", |
||||
}.to_string() |
||||
} |
||||
} |
||||
|
||||
impl From<io::Error> for Error { |
||||
fn from(e: io::Error) -> Self { |
||||
Error::Io(e) |
||||
} |
||||
} |
||||
|
||||
impl From<serde_json::Error> for Error { |
||||
fn from(e: serde_json::Error) -> Self { |
||||
Error::SerdeJson(e) |
||||
} |
||||
} |
||||
|
||||
impl From<toml::de::Error> for Error { |
||||
fn from(e: toml::de::Error) -> Self { |
||||
Error::SerdeToml(e) |
||||
} |
||||
} |
Loading…
Reference in new issue