I am trying to have a subcommand launched if there is no argument that has been supplied by the user and I could not find any way to do this.

If there is no subcommand supplied the help will show up when I want some action instead to be passed.

2

1 Answer

Based on the official clap documentation.

Modified by wrapping the Subcommand in Option, which makes it optional:

use clap::{Parser, Subcommand}; #[derive(Parser)] #[command(author, version, about, long_about = None)] #[command(propagate_version = true)] struct Cli { #[command(subcommand)] command: Option<Commands>, } #[derive(Subcommand)] enum Commands { /// Adds files to myapp Add { name: Option<String> }, } 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 cmd match &cli.command { Some(Commands::Add { name }) => { println!("'myapp add' was used, name is: {:?}", name) } None => { println!("Default subcommand"); } } } 

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.