nedots 0.1.2

A tool to manage configuration files/(ne)dots.
mod cmd;
mod config;

use clap::Parser;
use cmd::{nedots::RootCmd, Command};
use std::process::ExitCode;

fn init() -> RootCmd {
    let mut root_cmd = RootCmd::parse();

    if cfg!(debug_assertions) {
        // More verbose logging during debugging (not release.)
        env_logger::Builder::new()
            .filter_level(root_cmd.verbose.log_level_filter())
            .init();

        // We'll also use a test file as opposed to the default file.
        root_cmd.cfg_file = String::from(".nedots.test.yml");
    } else {
        // More brevity in release.
        env_logger::Builder::new()
            .format_timestamp(None)
            .format_module_path(false)
            .format_target(false)
            .filter_level(root_cmd.verbose.log_level_filter())
            .init();
    }

    root_cmd
}

fn run(root_cmd: RootCmd) -> ExitCode {
    match root_cmd.exec(&root_cmd) {
        Ok(_) => ExitCode::SUCCESS,
        Err(err) => {
            log::error!("{}", err);
            ExitCode::FAILURE
        }
    }
}

fn main() -> ExitCode {
    run(init())
}