use clap::Parser;
use tracing::error;
use prodigy::app::{handle_fatal_error, initialize_app, AppConfig};
use prodigy::cli::{execute_command, Cli};
#[tokio::main]
async fn main() {
let cli = Cli::parse();
let app_config = match AppConfig::new(cli.verbose) {
Ok(config) => config,
Err(e) => {
eprintln!("Failed to initialize application configuration: {}", e);
std::process::exit(1);
}
};
if let Err(e) = initialize_app(app_config).await {
error!("Application initialization failed: {}", e);
}
let result = execute_command(cli.command, cli.verbose).await;
if let Err(e) = result {
handle_fatal_error(e, cli.verbose);
}
}