mod init; mod server; use clap::Parser; #[derive(Parser, Debug)] #[clap(version = clap::crate_version!(), author = clap::crate_authors!(), about = clap::crate_description!())] struct Commands { #[clap(subcommand)] command: Command, } #[derive(Parser, Debug)] enum Command { Init, #[clap(subcommand)] Server(Server), } #[derive(Parser, Debug)] enum Server { Init, Start, } fn main() { let commands = Commands::parse(); match commands.command { Command::Init => { init::run(); } Command::Server(server) => match server { Server::Init => { server::init(); } Server::Start => { server::start(); } }, } }