use {
core::{
fmt::{self, Display, Formatter},
str::FromStr,
},
std::io::{Error, ErrorKind},
};
#[derive(Debug)]
pub (crate) enum CmdOption {
OnSuccess,
OnFailure
}
impl Display for CmdOption {
fn fmt(&self, f: &mut Formatter) -> Result<(), fmt::Error> {
f.write_str(match self {
CmdOption::OnSuccess => "on-success",
CmdOption::OnFailure => "on-failure",
})
}
}
impl FromStr for CmdOption {
type Err = Error;
fn from_str(s: &str) -> Result<Self, Self::Err> {
if s.eq_ignore_ascii_case("on-success") {
Ok(CmdOption::OnSuccess)
} else if s.eq_ignore_ascii_case("on-failure") {
Ok(CmdOption::OnFailure)
} else {
Err(Error::new(ErrorKind::InvalidInput, format!("Unknown option: {:?}", s)))
}
}
}