2022-08-05 07:24:25 +10:00
|
|
|
#![deny(clippy::all)]
|
2022-08-05 06:30:02 +10:00
|
|
|
use clap::Command;
|
2022-08-05 05:28:14 +10:00
|
|
|
|
2022-08-05 05:29:01 +10:00
|
|
|
mod publish;
|
2022-10-02 06:21:15 +11:00
|
|
|
mod release;
|
2022-10-02 06:36:42 +11:00
|
|
|
mod utils;
|
2022-08-05 05:29:01 +10:00
|
|
|
|
2022-10-02 06:30:45 +11:00
|
|
|
#[derive(Debug)]
|
|
|
|
pub enum Error {
|
|
|
|
PublishError(publish::Error),
|
|
|
|
ReleaseError(release::Error),
|
|
|
|
}
|
|
|
|
|
2022-10-02 05:44:21 +11:00
|
|
|
fn cli() -> Command {
|
|
|
|
Command::new("Agb tools")
|
2022-08-05 05:28:14 +10:00
|
|
|
.subcommand_required(true)
|
|
|
|
.arg_required_else_help(true)
|
2022-08-05 06:36:24 +10:00
|
|
|
.subcommand(publish::command())
|
2022-10-02 06:21:15 +11:00
|
|
|
.subcommand(release::command())
|
2022-10-02 05:44:21 +11:00
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
let matches = cli().get_matches();
|
2022-08-05 05:28:14 +10:00
|
|
|
|
2022-08-05 06:10:11 +10:00
|
|
|
let result = match matches.subcommand() {
|
2022-10-02 06:30:45 +11:00
|
|
|
Some(("publish", arg_matches)) => {
|
|
|
|
publish::publish(arg_matches).map_err(Error::PublishError)
|
|
|
|
}
|
|
|
|
|
|
|
|
Some(("release", arg_matches)) => {
|
|
|
|
release::release(arg_matches).map_err(Error::ReleaseError)
|
|
|
|
}
|
|
|
|
|
2022-08-05 05:28:14 +10:00
|
|
|
_ => unreachable!("Exhausted list of subcommands and subcommand_required prevents `None`"),
|
2022-08-05 06:10:11 +10:00
|
|
|
};
|
|
|
|
|
|
|
|
if let Err(e) = result {
|
2023-02-08 07:32:43 +11:00
|
|
|
eprintln!("Error: {e:?}");
|
2022-08-05 05:28:14 +10:00
|
|
|
}
|
|
|
|
}
|
2022-10-02 05:44:21 +11:00
|
|
|
|
|
|
|
#[cfg(test)]
|
|
|
|
mod tests {
|
|
|
|
use super::*;
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn verify_cli() {
|
|
|
|
cli().debug_assert();
|
|
|
|
}
|
|
|
|
}
|