How to make a default subcommand with clap and derive

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.

You Might Also Like