#![deny(missing_docs)]
#![warn(clippy::all)]
mod app;
mod cli;
mod commands;
mod config;
mod detect;
mod discovery;
mod error;
mod hints;
mod plugins;
mod runtime;
mod selfupdate;
mod spawn;
mod style;
use clap::Parser;
fn main() -> std::process::ExitCode {
selfupdate::cleanup_stale_old();
let args = cli::Cli::parse();
let code = dispatch(&args);
std::process::ExitCode::from(code)
}
fn dispatch(args: &cli::Cli) -> u8 {
match commands::dispatch(args) {
Ok(code) => code,
Err(e) => {
anstream::eprintln!(
"{} {}",
style::paint(style::ERROR, "pmpx:"),
style::paint(style::ERROR_BODY, &e)
);
e.exit_code()
}
}
}