use clap::Parser;
use tracing_subscriber::{fmt, prelude::*, EnvFilter};
use pitboss::cli::{self, Cli};
#[tokio::main]
async fn main() -> std::process::ExitCode {
let cli = Cli::parse();
init_tracing(&cli);
match cli::dispatch(cli).await {
Ok(code) => code.into_process(),
Err(e) => {
eprintln!("error: {e:#}");
std::process::ExitCode::FAILURE
}
}
}
fn init_tracing(cli: &Cli) {
let filter = EnvFilter::try_from_env("PITBOSS_LOG")
.or_else(|_| EnvFilter::try_from_default_env())
.unwrap_or_else(|_| EnvFilter::new(cli.verbose_filter().unwrap_or("info")));
let registry = tracing_subscriber::registry().with(filter);
if cli.is_tui_mode() {
registry.init();
} else {
registry.with(fmt::layer().with_target(false)).init();
}
}