cbench 0.1.1

Environment control for benchmarks
Documentation
use std::process::{ExitCode, Termination};

use cbench::{cli, main_exec, maybe_run_setup, ExitStatusError};

fn main() -> ExitCode {
    maybe_run_setup();

    let args: cli::Args = clap::Parser::parse();
    let ret = main_exec(&args.exec_args, &args.command, &args.command_args);
    match ret {
        Ok(()) => ExitCode::SUCCESS,
        Err(err) => {
            args.exec_args.verbosity.error(format_args!("{err:#}"));
            if let Ok(st) = err.downcast::<ExitStatusError>() {
                st.report()
            } else {
                ExitCode::FAILURE
            }
        }
    }
}