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.
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.
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");
}
}
}