1use std::{io, path::PathBuf};
9
10pub type ConfigResult<T> = Result<T, ConfigError>;
11
12#[derive(Debug, thiserror::Error)]
13pub enum ConfigError {
14 #[error("failed to read config file `{path}`: {source}")]
16 ConfigRead {
17 path: PathBuf,
18 #[source]
19 source: io::Error,
20 },
21
22 #[error("invalid TOML in `{path}`{canonical_display}: {source}", canonical_display = match canonical {
24 Some(p) => format!(" ({})", p.display()),
25 None => String::new(),
26 })]
27 ConfigParse {
28 path: PathBuf,
29 canonical: Option<PathBuf>,
30 #[source]
31 source: toml::de::Error,
32 },
33
34 #[error("failed to resolve path `{path}`: {source}")]
36 PathResolve {
37 path: PathBuf,
38 #[source]
39 source: io::Error,
40 },
41
42 #[error("configuration validation failed")]
45 Validation,
46
47 #[error(transparent)]
50 RuleSet(#[from] apimock_routing::RoutingError),
51}