chronicle 0.1.0

write your chronicle from command line
Documentation
use pre::*;

use crate::sub;

pub fn exec(cfg: &mut Config) -> CliRes {
    let mut m = build().get_matches();
    let (cmd, args) = match m.subcommand() {
        Some((cmd, args)) => (cmd, args),
        _ => {
            m = build().get_matches_from(vec!["chron", "help"]);
            m.subcommand().context("could not parse subcommand")?
        },
    };

    exec_sub(cfg, cmd, args)?;
    Ok(())
}

fn build() -> Cli {
    Command::new("chron")
        .version(clap::crate_version!())
        .setting(AppSettings::DeriveDisplayOrder)
        .override_usage("chron [SUBCOMMAND] [CHRON_NAME]")
        .subcommands(sub::commands())
}

fn exec_sub(cfg: &mut Config, cmd: &str, args: &ArgMatches) -> CliRes {
    match sub::find_proc(cmd) {
        Some(proc) => proc(cfg, args),
        None => bail!("unknown subcommand `{cmd}`"),
    }
}