use anyhow::Result;
use clap::Parser;
use rget::cli::{self, Cli};
fn main() -> Result<()> {
let cli = Cli::parse();
init_tracing(cli.verbose);
let runtime = tokio::runtime::Builder::new_multi_thread()
.enable_all()
.build()?;
let code = match runtime.block_on(cli::dispatch(cli)) {
Ok(code) => code,
Err(err) => {
eprintln!("error: {err:#}");
cli::EXIT_FAILURE
}
};
drop(runtime);
std::process::exit(code);
}
fn init_tracing(verbose: bool) {
use tracing_subscriber::EnvFilter;
let filter = match std::env::var("RUST_LOG") {
Ok(value) => EnvFilter::new(value),
Err(_) if verbose => EnvFilter::new("rget=debug"),
Err(_) => EnvFilter::new("warn"),
};
let _ = tracing_subscriber::fmt()
.with_env_filter(filter)
.with_writer(std::io::stderr)
.with_target(false)
.try_init();
}