use anyhow::Result;
use clap::Parser;
use tracing_subscriber::{fmt, prelude::*, EnvFilter};
use vsec::cli::{Cli, Commands};
fn main() -> Result<()> {
let cli = Cli::parse();
setup_logging(&cli)?;
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(())
}