use std::path::PathBuf;
use thiserror::Error;
#[derive(Debug, Error)]
#[non_exhaustive]
pub enum Error {
#[error("cannot read `{path}`: {source}")]
Io {
path: PathBuf,
#[source]
source: std::io::Error,
},
#[error("cannot parse `{path}`: {source}")]
Toml {
path: PathBuf,
#[source]
source: toml::de::Error,
},
#[error("`[package.metadata.convention-lint]` section not found in `{0}`")]
MissingSection(PathBuf),
#[error("`[package.metadata.convention-lint]` must be a TOML table")]
InvalidSection,
#[error("`[package.metadata.convention-lint.dirs]` must be a TOML table")]
InvalidDirsTable,
#[error("value for key `{key}` must be a plain string (e.g. `\"snake_case\"`)")]
InvalidConventionValue {
key: String,
},
#[error(
"unknown convention `{value}` for extension `{ext}`; \
valid values: `snake_case`, `CamelCase`, `camelCase`, \
`SCREAMING_SNAKE_CASE`, `kebab-case`"
)]
UnknownConvention {
ext: String,
value: String,
},
}