enseal 0.15.1

Secure, ephemeral secret sharing for developers
Documentation
use anyhow::Result;
use clap::Parser;

mod cli;
mod config;
mod crypto;
mod env;
mod keys;
#[cfg(feature = "server")]
mod server;
mod transfer;
mod ui;

#[tokio::main]
async fn main() -> Result<()> {
    rustls::crypto::ring::default_provider()
        .install_default()
        .expect("failed to install rustls crypto provider");

    let args = cli::Cli::parse();

    let log_level = if args.verbose {
        tracing::Level::DEBUG
    } else if args.quiet {
        tracing::Level::ERROR
    } else {
        tracing::Level::INFO
    };

    tracing_subscriber::fmt()
        .with_max_level(log_level)
        .with_target(false)
        .without_time()
        .init();

    match args.command {
        cli::Command::Share(args) => cli::share::run(args).await,
        cli::Command::Receive(args) => cli::receive::run(args).await,
        cli::Command::Inject(args) => cli::inject::run(args).await,
        cli::Command::Check(args) => cli::check::run(args),
        cli::Command::Diff(args) => cli::diff::run(args),
        cli::Command::Redact(args) => cli::redact::run(args),
        cli::Command::Validate(args) => cli::validate::run(args),
        cli::Command::Template(args) => cli::template::run(args),
        cli::Command::Encrypt(args) => cli::encrypt::run(args),
        cli::Command::Decrypt(args) => cli::decrypt::run(args),
        cli::Command::Keys(args) => cli::keys::run(args),
        #[cfg(feature = "server")]
        cli::Command::Serve(args) => cli::serve::run(args).await,
        cli::Command::Completions { shell } => {
            let mut cmd = <cli::Cli as clap::CommandFactory>::command();
            clap_complete::generate(shell, &mut cmd, "enseal", &mut std::io::stdout());
            Ok(())
        }
    }
}