1pub mod args;
2mod logger;
3
4use crate::args::Args;
5use clap::Parser;
6use std::process::exit;
7use tokio::time::Instant;
8
9#[tokio::main]
10async fn main() {
11 let start = Instant::now();
12
13 match crate::args::run(Args::parse()).await {
14 Ok(()) => {
15 let elapsed = start.elapsed();
16 let time = (elapsed.as_secs(), elapsed.subsec_millis());
17 tracing::info!("Elapsed time: {}.{}secs.", time.0, time.1);
18 exit(0);
19 }
20 Err(err) => {
21 tracing::error!("{err}");
22 let err = color_print::cformat!("<red>[Error]\n{err}</red>");
23 eprintln!("{err}");
24 exit(1);
25 }
26 }
27}