#![allow(clippy::nonstandard_macro_braces)] use golgi::error::GolgiError; use peach_lib::error::PeachError; pub use snafu::ResultExt; use snafu::Snafu; #[derive(Debug, Snafu)] #[allow(clippy::enum_variant_names)] #[snafu(visibility(pub(crate)))] pub enum PeachConfigError { #[snafu(display("Command not found: \"{}\"", command))] CmdIoError { source: std::io::Error, command: String, }, #[snafu(display("\"{}\" returned an error. {}", command, msg))] CmdError { msg: String, command: String }, #[snafu(display("Command could not parse stdout: \"{}\"", command))] CmdParseOutputError { source: std::str::Utf8Error, command: String, }, #[snafu(display("Failed to write file: {}", file))] FileWriteError { file: String, source: std::io::Error, }, #[snafu(display("Failed to read file: {}", file))] FileReadError { file: String, source: std::io::Error, }, #[snafu(display("Error serializing json: {}", source))] SerdeError { source: serde_json::Error }, #[snafu(display("Error changing password: {}", source))] ChangePasswordError { source: PeachError }, #[snafu(display("Entered passwords did not match. Please try again."))] InvalidPassword, #[snafu(display("Error in peach lib: {}", source))] PeachLibError { source: PeachError }, #[snafu(display("Error in golgi: {}", source))] Golgi { source: GolgiError }, #[snafu(display("{}", message))] CmdInputError { message: String }, } impl From for PeachConfigError { fn from(err: std::io::Error) -> PeachConfigError { PeachConfigError::CmdIoError { source: err, command: "unknown".to_string(), } } } impl From for PeachConfigError { fn from(err: serde_json::Error) -> PeachConfigError { PeachConfigError::SerdeError { source: err } } } impl From for PeachConfigError { fn from(err: PeachError) -> PeachConfigError { PeachConfigError::PeachLibError { source: err } } } impl From for PeachConfigError { fn from(err: GolgiError) -> PeachConfigError { PeachConfigError::Golgi { source: err } } }