use std::{io, path::PathBuf};
pub type ConfigResult<T> = Result<T, ConfigError>;
#[derive(Debug, thiserror::Error)]
pub enum ConfigError {
#[error("failed to read config file `{path}`: {source}")]
ConfigRead {
path: PathBuf,
#[source]
source: io::Error,
},
#[error("invalid TOML in `{path}`{canonical_display}: {source}", canonical_display = match canonical {
Some(p) => format!(" ({})", p.display()),
None => String::new(),
})]
ConfigParse {
path: PathBuf,
canonical: Option<PathBuf>,
#[source]
source: toml::de::Error,
},
#[error("failed to resolve path `{path}`: {source}")]
PathResolve {
path: PathBuf,
#[source]
source: io::Error,
},
#[error("configuration validation failed")]
Validation,
#[error(transparent)]
RuleSet(#[from] apimock_routing::RoutingError),
}