'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.
Solution 1:[1]
Based on the official clap documentation.
Modified by wrapping the Subcommand in Option, which makes it optional:
use clap::{Parser, Subcommand};
#[derive(Parser)]
#[clap(author, version, about, long_about = None)]
#[clap(propagate_version = true)]
struct Cli {
#[clap(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");
}
}
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Finomnis |
