yage 0.5.0

A simple tool to manage encrypted secrets in YAML files with age encryption
Documentation
#[macro_use]
extern crate log;

use std::io;

use clap::CommandFactory;
use clap::Parser;

use yage::cli;
use yage::cmd;
use yage::error;

fn run() -> error::Result<i32> {
    let cli = cli::Cli::parse();
    if let Some(level) = cli.verbose.log_level() {
        ocli::init(level).unwrap();
    }

    if let Some(shell) = cli.completion {
        clap_complete::generate(shell, &mut cli::Cli::command(), "yage", &mut io::stdout());
        return Ok(0);
    }

    match &cli.command.unwrap() {
        cli::Commands::Keygen(args) => cmd::keygen(args),
        cli::Commands::Pubkey(args) => cmd::pubkey(args),
        cli::Commands::Edit(args) => cmd::edit(args),
        cli::Commands::Encrypt(args) => cmd::encrypt(args),
        cli::Commands::Decrypt(args) => cmd::decrypt(args),
        cli::Commands::Env(args) => cmd::env(args),
        cli::Commands::Check(args) => cmd::check(args),
        cli::Commands::Recipients(args) => cmd::recipients(args),
        cli::Commands::ReEncrypt(args) => cmd::re_encrypt(args),
    }
}

fn main() {
    match run() {
        Ok(exit_code) => std::process::exit(exit_code),
        Err(err) => {
            error!("{}", err);
            std::process::exit(1);
        }
    }
}