Search code examples
rustclap

How do I specify a boolean command line flag using Clap?


I want to add a command line flag. It's a flag, so it does not take an argument, it is either present or not. I also need to know how to read the flag, either TRUE or FALSE.

This is the code for defining the flag:

.arg(
    Arg::with_name("metal")
        .long("metal-micky")
        .required(false)
        .help("I want metal micky"),
)

I am trying to read the value like this:

let z = matches.value_of("metal");

However it is resulting in None when I print it:

println!("FLAG: {:?}", z);

It is None even when I specify the flag on the command line.


Solution

  • Don't know if this is the "approved" method but I use Args::takes_value:

    .arg(
        Arg::with_name("metal")
            .long("metal-micky")
            .required(false)
            .takes_value(false)
            .help("I want metal micky"),
    )
    

    Then check if the flag was passed with matches.is_present("metal")