use std::{error::Error, process};
use clap::Parser;
use oseda_cli::{
cmd::{
check,
deploy::{self},
fork::{self},
init, run,
},
Cli, Commands,
};
fn main() {
let cli = Cli::parse();
let result: Result<(), Box<dyn Error>> = match cli.command {
Commands::Init(options) => {
init::init(options).map(|_| println!("Successfully initialized oseda project"))
}
Commands::Run => run::run()
.map(|_| println!("Successfully ran oseda project"))
.map_err(|e| e.into()),
Commands::Check(options) => check::check(options)
.map(|_| println!("Successfully checked oseda project"))
.map_err(|e| e.into()),
Commands::Deploy(options) => deploy::deploy(options).map(|_| {
println!("Successfully deployed oseda project");
println!("See deployment instructions...");
}),
Commands::Fork => fork::fork(),
};
if let Err(err) = result {
eprintln!("Error: {err}");
process::exit(1);
}
}