use agpm_cli::cli;
use agpm_cli::core::error_formatting::user_friendly_error;
use anyhow::Result;
use clap::Parser;
use tracing_subscriber::EnvFilter;
#[tokio::main]
async fn main() -> Result<()> {
let cli = cli::Cli::parse();
let config = cli.build_config();
let rust_log_exists = std::env::var("RUST_LOG").is_ok();
let is_verbose = config.log_level == Some("debug".to_string());
let filter = if rust_log_exists {
EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("error"))
} else if is_verbose {
EnvFilter::new("debug")
} else {
EnvFilter::new("off")
};
tracing_subscriber::fmt()
.with_env_filter(filter)
.with_target(false) .with_thread_ids(false) .init();
#[cfg(windows)]
colored::control::set_virtual_terminal(true).ok();
match cli.execute_with_config(config).await {
Ok(()) => Ok(()),
Err(e) => {
let error_ctx = user_friendly_error(e);
error_ctx.display();
std::process::exit(1);
}
}
}