fn main() {
let argv: Vec<String> = std::env::args().collect();
if argv.len() >= 2 && argv[1] == "tool-runner-internal" {
if let Err(e) = crabmate::tool_sandbox::tool_runner_internal_main() {
eprintln!("{}", e);
std::process::exit(1);
}
std::process::exit(0);
}
let rt = match tokio::runtime::Builder::new_multi_thread()
.enable_all()
.build()
{
Ok(r) => r,
Err(e) => {
eprintln!("tokio runtime:{}", e);
std::process::exit(1);
}
};
let args = match crabmate::parse_args() {
Ok(a) => a,
Err(e) => {
eprintln!("{}", e);
std::process::exit(1);
}
};
if let Err(e) = rt.block_on(crabmate::run_cli_from_parsed(args)) {
if let Some(cli) = e.downcast_ref::<crabmate::CliExitError>() {
eprintln!("{}", cli.message);
std::process::exit(cli.code);
}
eprintln!("{}", e);
std::process::exit(1);
}
}