use thiserror::Error;
pub type Result<T> = std::result::Result<T, Error>;
#[derive(Debug, Error)]
pub enum Error {
#[error("catalog parse error in {file}: {source}")]
CatalogParse {
file: String,
#[source]
source: serde_yaml::Error,
},
#[error("catalog I/O error: {0}")]
Io(#[from] std::io::Error),
#[error("unknown vendor: {0}")]
UnknownVendor(String),
#[error("invalid version range '{expr}': {reason}")]
BadVersionRange {
expr: String,
reason: String,
},
#[error("invalid firmware version '{0}'")]
BadFirmwareVersion(String),
#[error("no entry for {vendor} {firmware:?} {command:?}")]
NoMatchingEntry {
vendor: String,
firmware: Option<String>,
command: crate::CommandType,
},
#[error("{command:?} is not supported on {vendor}: {reason}")]
NotSupported {
vendor: String,
command: crate::CommandType,
reason: String,
},
}