#[derive(Debug, thiserror::Error)]
pub enum Error {
#[error("{0}")]
Invalid(String),
#[error("repository not found: {0}")]
NotFound(String),
#[error("invalid slug: {0}")]
Slug(String),
#[error("error in config {path}: {message}")]
Config {
path: String,
message: String,
},
#[error("{context}: {source}")]
Io {
context: String,
source: std::io::Error,
},
}
impl Error {
pub fn invalid(message: impl Into<String>) -> Self {
Error::Invalid(message.into())
}
pub fn config(path: impl Into<String>, message: impl Into<String>) -> Self {
Error::Config {
path: path.into(),
message: message.into(),
}
}
pub fn io(context: impl Into<String>, source: std::io::Error) -> Self {
Error::Io {
context: context.into(),
source,
}
}
}
pub type Result<T> = std::result::Result<T, Error>;