#[allow(clippy::exit)]
fn main() {
tokio::runtime::Builder::new_multi_thread()
.enable_all()
.thread_name_fn(|| {
static ATOMIC_ID: std::sync::atomic::AtomicUsize =
std::sync::atomic::AtomicUsize::new(0);
let id = ATOMIC_ID.fetch_add(1, std::sync::atomic::Ordering::SeqCst);
format!("tokio-main-{id}")
})
.build()
.unwrap()
.block_on(async {
stable_eyre::install().unwrap();
rustls::crypto::ring::default_provider()
.install_default()
.unwrap();
let args: Vec<_> = std::env::args().collect();
tracing::debug!(?args, "cmd line arguments");
match <quilkin::Cli as clap::Parser>::parse().drive().await {
Ok(()) => std::process::exit(0),
Err(error) => {
tracing::error!(?error, "fatal error");
std::process::exit(-1)
}
}
});
}