use crate::prelude::*;
use di::ValidationError;
#[derive(Debug)]
pub enum BuildError {
Options(Vec<OptionIssue>),
Container(ValidationError),
}
impl Display for BuildError {
fn fmt(&self, f: &mut Formatter<'_>) -> FmtResult {
match self {
BuildError::Options(errors) => {
writeln!(f, "Configuration is invalid:")?;
for error in errors {
writeln!(f, "{} {error}", "△".yellow())?;
}
Ok(())
}
BuildError::Container(error) => {
write!(f, "Failed to build the application: {error}")
}
}
}
}
impl Error for BuildError {}
impl From<Vec<OptionIssue>> for BuildError {
fn from(errors: Vec<OptionIssue>) -> Self {
BuildError::Options(errors)
}
}
impl From<ValidationError> for BuildError {
fn from(error: ValidationError) -> Self {
BuildError::Container(error)
}
}