clap/examples/git.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

2.1 KiB

Git is an example of several common subcommand patterns.

Help:

$ git
? failed
git 
A fictional versioning CLI

Usage:
    git[EXE] <SUBCOMMAND>

Subcommands:
    clone    Clones repos
    push     pushes things
    add      adds things
    stash    
    help     Print this message or the help of the given subcommand(s)

Options:
    -h, --help    Print help information

$ git help
git 
A fictional versioning CLI

Usage:
    git[EXE] <SUBCOMMAND>

Subcommands:
    clone    Clones repos
    push     pushes things
    add      adds things
    stash    
    help     Print this message or the help of the given subcommand(s)

Options:
    -h, --help    Print help information

$ git help add
git-add 
adds things

Usage:
    git[EXE] add <PATH>...

Arguments:
    <PATH>...    Stuff to add

Options:
    -h, --help    Print help information

A basic argument:

$ git add
? failed
git-add 
adds things

Usage:
    git[EXE] add <PATH>...

Arguments:
    <PATH>...    Stuff to add

Options:
    -h, --help    Print help information

$ git add Cargo.toml Cargo.lock
Adding ["Cargo.toml", "Cargo.lock"]

Default subcommand:

$ git stash -h
git-stash 

Usage:
    git[EXE] stash [OPTIONS]
    git[EXE] stash <SUBCOMMAND>

Subcommands:
    push     
    pop      
    apply    
    help     Print this message or the help of the given subcommand(s)

Options:
    -m, --message <MESSAGE>    
    -h, --help                 Print help information

$ git stash push -h
git-stash-push 

Usage:
    git[EXE] stash push [OPTIONS]

Options:
    -m, --message <MESSAGE>    
    -h, --help                 Print help information

$ git stash pop -h
git-stash-pop 

Usage:
    git[EXE] stash pop [STASH]

Arguments:
    <STASH>    

Options:
    -h, --help    Print help information

$ git stash -m "Prototype"
Pushing Some("Prototype")

$ git stash pop
Popping None

$ git stash push -m "Prototype"
Pushing Some("Prototype")

$ git stash pop
Popping None

External subcommands:

$ git custom-tool arg1 --foo bar
Calling out to "custom-tool" with ["arg1", "--foo", "bar"]