
```no_run
#[derive(Debug, Clone, Bpaf)]
#[bpaf(options)]
pub enum Options {
    #[bpaf(command("run"))]
    /// Run a binary
    Run {
        /// Name of a binary crate
        name: String,
    },

    /// Run a self test
    #[bpaf(command)]
    Test,
}

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


Output

Help message lists subcommand

$ app --help

Usage: app COMMAND ...

Available options:

-h, --help

Prints help information

Available commands:

run

Run a binary

test

Run a self test

Commands have their own arguments

$ app run --name Bob
Run { name: "Bob" }

$ app test
Test

$ app test --name bob
Error: --name is not expected in this context

