use clap::Parser;
use secretsh::cli::{
run_delete, run_export, run_import, run_init, run_list, run_run, run_set, Cli, Command,
};
use secretsh::harden::harden_process;
fn main() {
harden_process();
let cli = Cli::parse();
let exit_code = dispatch(cli);
std::process::exit(exit_code);
}
fn dispatch(cli: Cli) -> i32 {
match cli.command {
Command::Init(args) => match run_init(&args) {
Ok(()) => 0,
Err(e) => {
eprintln!("secretsh error: {e}");
e.exit_code()
}
},
Command::Set(args) => match run_set(&args) {
Ok(()) => 0,
Err(e) => {
eprintln!("secretsh error: {e}");
e.exit_code()
}
},
Command::Delete(args) => match run_delete(&args) {
Ok(()) => 0,
Err(e) => {
eprintln!("secretsh error: {e}");
e.exit_code()
}
},
Command::List(args) => match run_list(&args) {
Ok(()) => 0,
Err(e) => {
eprintln!("secretsh error: {e}");
e.exit_code()
}
},
Command::Run(args) => match run_run(&args) {
Ok(child_exit_code) => child_exit_code,
Err(e) => {
eprintln!("secretsh error: {e}");
e.exit_code()
}
},
Command::Export(args) => match run_export(&args) {
Ok(()) => 0,
Err(e) => {
eprintln!("secretsh error: {e}");
e.exit_code()
}
},
Command::Import(args) => match run_import(&args) {
Ok(()) => 0,
Err(e) => {
eprintln!("secretsh error: {e}");
e.exit_code()
}
},
}
}