use std::path::PathBuf;
use thiserror::Error;
#[derive(Debug, Error)]
pub enum ArchavenError {
#[error("invalid pattern `{pattern}`: {message}")]
InvalidPattern {
pattern: String,
message: String,
},
#[error("invalid rule `{rule}`: {message}")]
InvalidRule {
rule: String,
message: String,
},
#[error("failed to walk `{path}`: {source}")]
WalkDir {
path: PathBuf,
#[source]
source: walkdir::Error,
},
#[error("failed to read `{path}`: {source}")]
ReadFile {
path: PathBuf,
#[source]
source: std::io::Error,
},
#[error("failed to parse Rust file `{path}`: {source}")]
ParseFile {
path: PathBuf,
#[source]
source: syn::Error,
},
}
impl ArchavenError {
pub(crate) fn invalid_pattern(pattern: impl Into<String>, message: impl Into<String>) -> Self {
Self::InvalidPattern {
pattern: pattern.into(),
message: message.into(),
}
}
pub(crate) fn invalid_rule(rule: impl Into<String>, message: impl Into<String>) -> Self {
Self::InvalidRule {
rule: rule.into(),
message: message.into(),
}
}
}