clap/examples/tutorial_derive/03_04_subcommands.md
Ed Page 83d6add9aa fix(help): Shift focus to subcommands, when present
In surveying various tools and CLI parsers, I noticed they list the
subcommands first.  This puts an emphasis on them which makes sense
because that is most likely what an end user is supposed to pass in
next.

Listing them last aligns with the usage order but it probably doesn't
outweigh the value of getting a user moving forward.
2022-08-26 10:59:40 -05:00

1.4 KiB

$ 03_04_subcommands_derive help
clap [..]
A simple to use, efficient, and full-featured Command Line Argument Parser

Usage:
    03_04_subcommands_derive[EXE] <SUBCOMMAND>

Subcommands:
    add     Adds files to myapp
    help    Print this message or the help of the given subcommand(s)

Options:
    -h, --help       Print help information
    -V, --version    Print version information

$ 03_04_subcommands_derive help add
clap-add [..]
Adds files to myapp

Usage:
    03_04_subcommands_derive[EXE] add [NAME]

Arguments:
    <NAME>    

Options:
    -h, --help       Print help information
    -V, --version    Print version information

$ 03_04_subcommands_derive add bob
'myapp add' was used, name is: Some("bob")

Because we used command: Commands instead of command: Option<Commands>:

$ 03_04_subcommands_derive
? failed
clap [..]
A simple to use, efficient, and full-featured Command Line Argument Parser

Usage:
    03_04_subcommands_derive[EXE] <SUBCOMMAND>

Subcommands:
    add     Adds files to myapp
    help    Print this message or the help of the given subcommand(s)

Options:
    -h, --help       Print help information
    -V, --version    Print version information

Because we added #[clap(propagate_version = true)]:

$ 03_04_subcommands_derive --version
clap [..]

$ 03_04_subcommands_derive add --version
clap-add [..]