#[derive(Debug, thiserror::Error)]
pub enum ErrorKind {
#[error("parser failed")]
Parser,
#[error("cannot convert from Utf-8 {0}")]
FromUtf8(std::str::Utf8Error),
#[error("IO error {0}")]
IO(#[from] std::io::Error),
#[error("Invalid path {0}")]
InvalidPath(String),
#[error("revision log load failure {0}")]
RevisionLogFailure(String),
#[error("invalid date time {0}")]
InvalidDateTime(String),
#[error("unknown requirement {0}")]
UnknownRequirement(String),
#[error("manifest issue {0}")]
Manifest(String),
}
impl From<nom::Err<nom::error::Error<&[u8]>>> for ErrorKind {
fn from(_value: nom::Err<nom::error::Error<&[u8]>>) -> Self {
ErrorKind::Parser
}
}
impl From<chrono::format::ParseError> for ErrorKind {
fn from(value: chrono::format::ParseError) -> Self {
ErrorKind::InvalidDateTime(format!("{:?}", value))
}
}
impl From<std::str::Utf8Error> for ErrorKind {
fn from(value: std::str::Utf8Error) -> Self {
ErrorKind::FromUtf8(value)
}
}