Skip to main content

appname

Function appname 

Source
pub fn appname() -> impl Parser<String>
Expand description

Parse the application name

If you are using OptionParser::run then it should just work. If you are using some variation of OptionParser::run_inner you’ll need to set the application name using Args::set_name.

Combinatoric example
#[derive(Debug, Clone)]
pub struct Options {
    user: String,
    appname: String,
}

pub fn options() -> OptionParser<Options> {
    let user = short('u')
        .long("user")
        .help("Specify user name")
        // you can specify exact type argument should produce
        // for as long as it implements `FromStr`
        .argument::<String>("NAME");

    construct!(Options { user, appname() }).to_options()
}

fn main() {
    println!("{:?}", options().run())
}
Derive example
#[derive(Debug, Clone, Bpaf)]
#[bpaf(options)]
pub struct Options {
    /// Specify user name
    #[bpaf(short, long, argument::<String>("NAME"))]
    user: String,

    /// Specify user age
    #[bpaf(external)]
    appname: String,
}

fn main() {
    println!("{:?}", options().run())
}
Output

Parsed application name doesn’t show up in the --help output

$ app --help

Usage: app -u=NAME

Available options:
-u, --user=NAME
Specify user name
-h, --help
Prints help information

but simply produces the app name, when it is available

$ app --user=Bob
Options { user: "Bob", appname: "app" }