use failure::Fail;
use rustls;
#[derive(Fail, Debug)]
pub enum SkrdError {
#[fail(display = "IO error: {}", _0)]
Io(#[cause] std::io::Error),
#[fail(display = "TLS error: {}", _0)]
Tls(#[cause] rustls::TLSError),
#[fail(display = "Log error: {}", _0)]
Log(#[cause] log::SetLoggerError),
#[fail(display = "Toml error: {}", _0)]
Toml(toml::de::Error),
#[fail(display = "Toml error: {}", _0)]
Json(serde_json::Error),
#[fail(display = "Serde error: {}", _0)]
Git(git2::Error),
#[fail(display = "Custom error: {}", _0)]
Custom(String),
}
impl From<std::io::Error> for SkrdError {
fn from(err: std::io::Error) -> SkrdError {
SkrdError::Io(err)
}
}
impl From<rustls::TLSError> for SkrdError {
fn from(err: rustls::TLSError) -> SkrdError {
SkrdError::Tls(err)
}
}
impl From<log::SetLoggerError> for SkrdError {
fn from(err: log::SetLoggerError) -> SkrdError {
SkrdError::Log(err)
}
}
impl std::convert::From<toml::de::Error> for SkrdError {
fn from(err: toml::de::Error) -> SkrdError {
SkrdError::Toml(err)
}
}
impl std::convert::From<git2::Error> for SkrdError {
fn from(err: git2::Error) -> Self {
SkrdError::Git(err)
}
}
impl std::convert::From<serde_json::Error> for SkrdError {
fn from(err: serde_json::Error) -> Self {
SkrdError::Json(err)
}
}
pub type SkrdResult<T> = std::result::Result<T, SkrdError>;