use crate::canonical::{CanonicalError, ErrorKind};
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum ConfigError {
NoProvider,
UnknownProvider { name: String },
IncompleteProvider { name: String, field: &'static str },
BadValue { key: String, detail: String },
MalformedFile { detail: String },
Ingress { detail: String },
}
impl std::fmt::Display for ConfigError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
ConfigError::NoProvider => f.write_str(
"no provider resolved: name one with --provider, or use a model a provider owns (a known alias, a model-id family, or an id in some provider's cached model list — run `bz --list-models`)",
),
ConfigError::UnknownProvider { name } => write!(f, "unknown provider `{name}`"),
ConfigError::IncompleteProvider { name, field } => {
write!(f, "provider `{name}` is missing required field `{field}`")
}
ConfigError::BadValue { key, detail } => write!(f, "bad value for `{key}`: {detail}"),
ConfigError::MalformedFile { detail } => write!(f, "malformed config: {detail}"),
ConfigError::Ingress { detail } => write!(f, "ingress: {detail}"),
}
}
}
impl From<ConfigError> for CanonicalError {
fn from(err: ConfigError) -> CanonicalError {
CanonicalError {
kind: ErrorKind::Config,
message: err.to_string(),
provider_detail: None,
retry_after_seconds: None,
}
}
}