diff options
| author | Alex Flint <[email protected]> | 2019-05-03 13:14:44 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2019-05-03 13:14:44 -0700 |
| commit | 6de9e789a982b5708c535308315c3d1d54217612 (patch) | |
| tree | 71f1ec963f089cce78c211eef7289e3735d48886 /example_test.go | |
| parent | fb1ae1c3e0bd00d45333c3d51384afc05846f7a0 (diff) | |
| parent | 3392c173d71a46d4be61c6c0b02c25e37dbd29e2 (diff) | |
Merge pull request #83 from alexflint/tweak-examples
Add expected outputs to all runnable examples
Diffstat (limited to 'example_test.go')
| -rw-r--r-- | example_test.go | 67 |
1 files changed, 51 insertions, 16 deletions
diff --git a/example_test.go b/example_test.go index c34effa..72807a7 100644 --- a/example_test.go +++ b/example_test.go @@ -3,12 +3,17 @@ package arg import ( "fmt" "os" + "strings" ) +func split(s string) []string { + return strings.Split(s, " ") +} + // This example demonstrates basic usage func Example() { // These are the args you would pass in on the command line - os.Args = []string{"./example", "--foo=hello", "--bar"} + os.Args = split("./example --foo=hello --bar") var args struct { Foo string @@ -16,65 +21,72 @@ func Example() { } MustParse(&args) fmt.Println(args.Foo, args.Bar) + // output: hello true } // This example demonstrates arguments that have default values func Example_defaultValues() { // These are the args you would pass in on the command line - os.Args = []string{"--help"} + os.Args = split("./example") var args struct { Foo string - Bar bool } args.Foo = "default value" MustParse(&args) - fmt.Println(args.Foo, args.Bar) + fmt.Println(args.Foo) + // output: default value } // This example demonstrates arguments that are required func Example_requiredArguments() { // These are the args you would pass in on the command line - os.Args = []string{"--foo=1", "--bar"} + os.Args = split("./example --foo=abc --bar") var args struct { Foo string `arg:"required"` Bar bool } MustParse(&args) + fmt.Println(args.Foo, args.Bar) + // output: abc true } // This example demonstrates positional arguments func Example_positionalArguments() { // These are the args you would pass in on the command line - os.Args = []string{"./example", "in", "out1", "out2", "out3"} + os.Args = split("./example in out1 out2 out3") var args struct { Input string `arg:"positional"` Output []string `arg:"positional"` } MustParse(&args) - fmt.Println("Input:", args.Input) - fmt.Println("Output:", args.Output) + fmt.Println("In:", args.Input) + fmt.Println("Out:", args.Output) + // output: + // In: in + // Out: [out1 out2 out3] } // This example demonstrates arguments that have multiple values func Example_multipleValues() { // The args you would pass in on the command line - os.Args = []string{"--help"} + os.Args = split("./example --database localhost --ids 1 2 3") var args struct { Database string IDs []int64 } MustParse(&args) - fmt.Printf("Fetching the following IDs from %s: %q", args.Database, args.IDs) + fmt.Printf("Fetching the following IDs from %s: %v", args.Database, args.IDs) + // output: Fetching the following IDs from localhost: [1 2 3] } // This eample demonstrates multiple value arguments that can be mixed with // other arguments. func Example_multipleMixed() { - os.Args = []string{"./example", "-c", "cmd1", "db1", "-f", "file1", "db2", "-c", "cmd2", "-f", "file2", "-f", "file3", "db3", "-c", "cmd3"} + os.Args = split("./example -c cmd1 db1 -f file1 db2 -c cmd2 -f file2 -f file3 db3 -c cmd3") var args struct { Commands []string `arg:"-c,separate"` Files []string `arg:"-f,separate"` @@ -82,21 +94,44 @@ func Example_multipleMixed() { } MustParse(&args) fmt.Println("Commands:", args.Commands) - fmt.Println("Files", args.Files) - fmt.Println("Databases", args.Databases) + fmt.Println("Files:", args.Files) + fmt.Println("Databases:", args.Databases) + + // output: + // Commands: [cmd1 cmd2 cmd3] + // Files: [file1 file2 file3] + // Databases: [db1 db2 db3] } // This example shows the usage string generated by go-arg func Example_usageString() { // These are the args you would pass in on the command line - os.Args = []string{"--help"} + os.Args = split("./example --help") var args struct { Input string `arg:"positional"` Output []string `arg:"positional"` - Verbose bool `arg:"-v,help:verbosity level"` - Dataset string `arg:"help:dataset to use"` + 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) {} + MustParse(&args) + + // output: + // Usage: example [--verbose] [--dataset DATASET] [--optimize OPTIMIZE] INPUT [OUTPUT [OUTPUT ...]] + // + // Positional arguments: + // INPUT + // OUTPUT + // + // Options: + // --verbose, -v verbosity level + // --dataset DATASET dataset to use + // --optimize OPTIMIZE, -O OPTIMIZE + // optimization level + // --help, -h display this help and exit } |
