use std::{fmt, io};
use hurl::parallel::error::JobError;
use hurl::report;
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum CliError {
InputRead(String),
InvalidOption(String),
Parsing,
OutputWrite(String),
GenericIO(String),
}
impl From<report::ReportError> for CliError {
fn from(error: report::ReportError) -> Self {
CliError::GenericIO(error.to_string())
}
}
impl From<JobError> for CliError {
fn from(error: JobError) -> Self {
match error {
JobError::InputRead(message) => CliError::GenericIO(message),
JobError::Parsing => CliError::Parsing,
JobError::OutputWrite(message) => CliError::OutputWrite(message),
}
}
}
impl fmt::Display for CliError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self {
CliError::InputRead(message) => write!(f, "{message}"),
CliError::InvalidOption(message) => write!(f, "{message}"),
CliError::Parsing => Ok(()),
CliError::OutputWrite(message) => write!(f, "{message}"),
CliError::GenericIO(message) => write!(f, "{message}"),
}
}
}
impl From<io::Error> for CliError {
fn from(error: io::Error) -> Self {
CliError::GenericIO(error.to_string())
}
}