diff options
| author | Alex Flint <[email protected]> | 2019-05-03 15:49:44 -0700 |
|---|---|---|
| committer | Alex Flint <[email protected]> | 2019-05-03 15:49:44 -0700 |
| commit | b83047068d06bf682cdcaad3a090ff289df827b1 (patch) | |
| tree | ad2276d4fb09b54ee20f72f46d4dcf27fd60787d /example_test.go | |
| parent | 15bf383f1d5db9bf362029529f3c83f092e2d00f (diff) | |
print help and usage at subcommand level if necessary
Diffstat (limited to 'example_test.go')
| -rw-r--r-- | example_test.go | 89 |
1 files changed, 86 insertions, 3 deletions
diff --git a/example_test.go b/example_test.go index eb8d315..b58085f 100644 --- a/example_test.go +++ b/example_test.go @@ -104,7 +104,7 @@ func Example_multipleMixed() { } // This example shows the usage string generated by go-arg -func Example_usageString() { +func Example_helpText() { // These are the args you would pass in on the command line os.Args = split("./example --help") @@ -136,8 +136,8 @@ func Example_usageString() { // --help, -h display this help and exit } -// This example shows the usage string generated by go-arg -func Example_usageStringWithSubcommand() { +// This example shows the usage string generated by go-arg when using subcommands +func Example_helpTextWithSubcommand() { // These are the args you would pass in on the command line os.Args = split("./example --help") @@ -172,3 +172,86 @@ func Example_usageStringWithSubcommand() { // get fetch an item and print it // list list available items } + +// This example shows the usage string generated by go-arg when using subcommands +func Example_helpTextForSubcommand() { + // These are the args you would pass in on the command line + os.Args = split("./example get --help") + + type getCmd struct { + Item string `arg:"positional" help:"item to fetch"` + } + + type listCmd struct { + Format string `help:"output format"` + Limit int + } + + var args struct { + Verbose bool + Get *getCmd `arg:"subcommand" help:"fetch an item and print it"` + List *listCmd `arg:"subcommand" help:"list available items"` + } + + // This is only necessary when running inside golang's runnable example harness + osExit = func(int) {} + + MustParse(&args) + + // output: + // Usage: example get ITEM + // + // Positional arguments: + // ITEM item to fetch + // + // Options: + // --help, -h display this help and exit +} + +// This example shows the error string generated by go-arg when an invalid option is provided +func Example_errorText() { + // These are the args you would pass in on the command line + os.Args = split("./example --optimize INVALID") + + var args struct { + Input string `arg:"positional"` + Output []string `arg:"positional"` + Verbose bool `arg:"-v" help:"verbosity level"` + Dataset string `help:"dataset to use"` + Optimize int `arg:"-O,help:optimization level"` + } + + // This is only necessary when running inside golang's runnable example harness + osExit = func(int) {} + stderr = os.Stdout + + MustParse(&args) + + // output: + // Usage: example [--verbose] [--dataset DATASET] [--optimize OPTIMIZE] INPUT [OUTPUT [OUTPUT ...]] + // error: error processing --optimize: strconv.ParseInt: parsing "INVALID": invalid syntax +} + +// This example shows the error string generated by go-arg when an invalid option is provided +func Example_errorTextForSubcommand() { + // These are the args you would pass in on the command line + os.Args = split("./example get --count INVALID") + + type getCmd struct { + Count int + } + + var args struct { + Get *getCmd `arg:"subcommand"` + } + + // This is only necessary when running inside golang's runnable example harness + osExit = func(int) {} + stderr = os.Stdout + + MustParse(&args) + + // output: + // Usage: example get [--count COUNT] + // error: error processing --count: strconv.ParseInt: parsing "INVALID": invalid syntax +} |
