mirror of
https://github.com/italicsjenga/agb.git
synced 2024-12-23 16:21:33 +11:00
51 lines
1 KiB
Rust
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();
|
|
}
|
|
}
|