use std::process::ExitCode; use clap::Parser; use self::cli::parameters::Cli; use self::cli::parameters::Commands; use self::command::build::run_build; use self::command::daemon::start_daemon; use self::error::CustomError; use self::init_tracing::init_telemetry; use self::init_tracing::shutdown_telemetry; mod cli; mod command; mod config; mod error; mod fs_util; mod git_util; mod init_tracing; fn main() -> Result { let rt = tokio::runtime::Runtime::new()?; rt.block_on(async { main_body().await }) } async fn main_body() -> Result { init_telemetry().expect("Telemetry should initialize successfully."); let args = Cli::parse(); match args.command { Commands::Build(args) => { run_build(args).await?; } Commands::Daemon(args) => { start_daemon(args).await?; } }; shutdown_telemetry().expect("Telemetry should shutdown successfully."); Ok(ExitCode::SUCCESS) }