use anyhow::Result;
use clap::{ArgMatches, Command};
pub mod simplify;
pub mod transpose;
pub const COMMAND_NAME: &str = "transform";
pub fn cli(command: Command) -> Command {
let sub_command = Command::new(COMMAND_NAME)
.about("Apply a transformation to a graph.")
.subcommand_required(true)
.arg_required_else_help(true)
.allow_external_subcommands(true);
let sub_command = simplify::cli(sub_command);
let sub_command = transpose::cli(sub_command);
command.subcommand(sub_command.display_order(0))
}
pub fn main(submatches: &ArgMatches) -> Result<()> {
match submatches.subcommand() {
Some((simplify::COMMAND_NAME, sub_m)) => simplify::main(sub_m),
Some((transpose::COMMAND_NAME, sub_m)) => transpose::main(sub_m),
Some((command_name, _)) => {
eprintln!("Unknown command: {:?}", command_name);
std::process::exit(1);
}
None => {
eprintln!("No command given for transform");
std::process::exit(1);
}
}
}