use std::fmt::{self, Display, Formatter};
#[derive(Debug)]
pub enum KanbusError {
Initialization(String),
Io(String),
IdGenerationFailed(String),
Configuration(String),
InvalidTransition(String),
InvalidHierarchy(String),
IssueOperation(String),
ProtocolError(String),
PolicyViolation {
policy_file: String,
scenario: String,
failed_step: String,
message: String,
issue_id: String,
},
}
impl Display for KanbusError {
fn fmt(&self, formatter: &mut Formatter<'_>) -> fmt::Result {
match self {
KanbusError::Initialization(message) => write!(formatter, "{message}"),
KanbusError::Io(message) => write!(formatter, "{message}"),
KanbusError::IdGenerationFailed(message) => write!(formatter, "{message}"),
KanbusError::Configuration(message) => write!(formatter, "{message}"),
KanbusError::InvalidTransition(message) => write!(formatter, "{message}"),
KanbusError::InvalidHierarchy(message) => write!(formatter, "{message}"),
KanbusError::IssueOperation(message) => write!(formatter, "{message}"),
KanbusError::ProtocolError(message) => write!(formatter, "{message}"),
KanbusError::PolicyViolation {
policy_file,
scenario,
failed_step,
message,
issue_id,
} => {
write!(
formatter,
"policy violation in {policy_file} for issue {issue_id}\n Scenario: {scenario}\n Failed: {failed_step}\n {message}"
)
}
}
}
}
impl std::error::Error for KanbusError {}