2026-02-14 13:31:21 -05:00
|
|
|
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;
|
2026-02-17 22:49:42 -05:00
|
|
|
use self::command::feed_logs::feed_logs;
|
2026-02-14 13:31:21 -05:00
|
|
|
use self::error::CustomError;
|
|
|
|
|
use self::init_tracing::init_telemetry;
|
|
|
|
|
use self::init_tracing::shutdown_telemetry;
|
|
|
|
|
mod cli;
|
|
|
|
|
mod command;
|
|
|
|
|
mod config;
|
2026-02-14 22:15:09 -05:00
|
|
|
mod database;
|
2026-02-14 13:31:21 -05:00
|
|
|
mod error;
|
2026-02-14 16:00:37 -05:00
|
|
|
mod fs_util;
|
|
|
|
|
mod git_util;
|
2026-02-14 13:31:21 -05:00
|
|
|
mod init_tracing;
|
2026-02-14 19:20:52 -05:00
|
|
|
mod nix_util;
|
2026-02-14 13:31:21 -05:00
|
|
|
|
2026-02-14 22:15:09 -05:00
|
|
|
pub(crate) type Result<T> = std::result::Result<T, CustomError>;
|
|
|
|
|
|
|
|
|
|
fn main() -> Result<ExitCode> {
|
2026-02-14 13:31:21 -05:00
|
|
|
let rt = tokio::runtime::Runtime::new()?;
|
|
|
|
|
rt.block_on(async { main_body().await })
|
|
|
|
|
}
|
|
|
|
|
|
2026-02-14 22:15:09 -05:00
|
|
|
async fn main_body() -> Result<ExitCode> {
|
2026-02-14 13:31:21 -05:00
|
|
|
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?;
|
|
|
|
|
}
|
2026-02-17 22:49:42 -05:00
|
|
|
Commands::FeedLog(args) => {
|
|
|
|
|
feed_logs(args).await?;
|
|
|
|
|
}
|
2026-02-14 13:31:21 -05:00
|
|
|
};
|
|
|
|
|
shutdown_telemetry().expect("Telemetry should shutdown successfully.");
|
|
|
|
|
Ok(ExitCode::SUCCESS)
|
|
|
|
|
}
|