use std::process::ExitCode as ProcessExitCode;
use lihaaf::cli;
use lihaaf::error::Error;
use lihaaf::exit::ExitCode;
use lihaaf::session;
fn main() -> ProcessExitCode {
let mut argv: Vec<String> = std::env::args().collect();
if argv.len() >= 2 && argv[1] == "lihaaf" {
argv.remove(1);
}
let parsed = match cli::parse_from(argv) {
Ok(p) => p,
Err(e) => {
return ProcessExitCode::from(e.exit_code() as u8);
}
};
match session::run(parsed) {
Ok(report) => ProcessExitCode::from(report.exit_code() as u8),
Err(Error::Session(outcome)) => {
eprintln!("{outcome}");
ProcessExitCode::from(outcome.exit_code() as u8)
}
Err(other) => {
eprintln!("lihaaf: {other}");
ProcessExitCode::from(ExitCode::ConfigInvalid as u8)
}
}
}