agb/tools/src/main.rs
2023-02-07 20:32:43 +00:00

51 lines
1 KiB
Rust

#![deny(clippy::all)]
use clap::Command;
mod publish;
mod release;
mod utils;
#[derive(Debug)]
pub enum Error {
PublishError(publish::Error),
ReleaseError(release::Error),
}
fn cli() -> Command {
Command::new("Agb tools")
.subcommand_required(true)
.arg_required_else_help(true)
.subcommand(publish::command())
.subcommand(release::command())
}
fn main() {
let matches = cli().get_matches();
let result = match matches.subcommand() {
Some(("publish", arg_matches)) => {
publish::publish(arg_matches).map_err(Error::PublishError)
}
Some(("release", arg_matches)) => {
release::release(arg_matches).map_err(Error::ReleaseError)
}
_ => unreachable!("Exhausted list of subcommands and subcommand_required prevents `None`"),
};
if let Err(e) = result {
eprintln!("Error: {e:?}");
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn verify_cli() {
cli().debug_assert();
}
}