args-cli 0.1.1

Command-line interface for args
Documentation
use crate::{command::Args, config::UserConfig};

pub async fn setup() -> anyhow::Result<()> {
    dotenvy::dotenv().ok();
    rustls::crypto::aws_lc_rs::default_provider()
        .install_default()
        .expect("failed to install rustls crypto provider");
    Ok(())
}

pub async fn run(args: &Args) -> anyhow::Result<()> {
    let config = UserConfig::load()?;
    match args {
        Args::Login(login_args) => login_args.execute(config).await,
        Args::Status(status_args) => status_args.execute(config).await,
        // TODO: re-enable as these features ship.
        // Args::Save(save_args) => save_args.execute().await,
        // Args::Ci(ci_args) => ci_args.command.execute().await,
        // Args::Review(review_args) => review_args.command.execute(config).await,
        // Args::Runner(runner_args) => {
        //     let config = crate::config::RunnerConfig::load()?;
        //     runner_args.command.execute(config).await
        // }
    }
}