use clap::{AppSettings, Parser, Subcommand}; #[derive(Parser)] #[clap(author, version, about)] #[clap(global_setting(AppSettings::PropagateVersion))] #[clap(global_setting(AppSettings::UseLongFormatForHelpSubcommand))] #[clap(setting(AppSettings::SubcommandRequiredElseHelp))] struct Cli { #[clap(subcommand)] command: Commands, } #[derive(Subcommand)] enum Commands { /// Adds files to myapp Add { name: Option }, } fn main() { let cli = Cli::parse(); // You can check for the existence of subcommands, and if found use their // matches just as you would the top level app match &cli.command { Commands::Add { name } => { println!("'myapp add' was used, name is: {:?}", name) } } }