vsec 0.0.1

Detect secrets and in Rust codebases
Documentation
// src/main.rs

use anyhow::Result;
use clap::Parser;
use tracing_subscriber::{fmt, prelude::*, EnvFilter};

use vsec::cli::{Cli, Commands};

fn main() -> Result<()> {
    // Parse CLI arguments
    let cli = Cli::parse();

    // Setup logging
    setup_logging(&cli)?;

    // Execute command
    match cli.command {
        Commands::Scan(args) => vsec::cli::cmd_scan(args, cli.config),
        Commands::Init(args) => vsec::cli::cmd_init(args),
        Commands::Explain(args) => vsec::cli::cmd_explain(args),
        Commands::Debug(args) => vsec::cli::cmd_debug(args),
    }
}

fn setup_logging(cli: &Cli) -> Result<()> {
    let filter = if cli.quiet {
        "error"
    } else if cli.verbose {
        "debug"
    } else {
        "info"
    };

    tracing_subscriber::registry()
        .with(fmt::layer().with_writer(std::io::stderr))
        .with(
            EnvFilter::try_from_default_env()
                .unwrap_or_else(|_| EnvFilter::new(filter)),
        )
        .init();

    Ok(())
}