use utils::PathMod;
use utils::Styled;
use utils::Color;
use std::path::PathBuf;
use utils::Prog;
#[derive(Copy,Clone)]
pub enum ExitStatus {
Ok,
Error,
OptError,
ArgError,
}
pub trait Exit<T: AsRef<str>> {
fn error(&self, mesg: T, status: ExitStatus);
fn path_error(&self, mesg: T, item: PathBuf);
}
impl <T: AsRef<str>> Exit<T> for Prog {
fn error(&self, mesg: T, status: ExitStatus) {
println!("{}{} {}", self.name.paint(Color::Red), ":".paint(Color::Red),
mesg.as_ref().paint(Color::Red));
&self.exit(status);
}
fn path_error(&self, mesg: T, item: PathBuf) {
println!("{}{} {}", item.as_str().paint(Color::Red),
":".paint(Color::Red), mesg.as_ref().paint(Color::Red));
&self.exit(ExitStatus::Error);
}
}