diff options
| -rw-r--r-- | usage.go | 10 | ||||
| -rw-r--r-- | usage_test.go | 16 |
2 files changed, 22 insertions, 4 deletions
@@ -5,6 +5,7 @@ import ( "io" "os" "path/filepath" + "reflect" "strings" ) @@ -114,6 +115,15 @@ func printOption(w io.Writer, spec *spec) { } fmt.Fprint(w, spec.help) } + // Check if spec.dest is zero value or not + // If it isn't a default value have been added + v := spec.dest + if v.IsValid() { + z := reflect.Zero(v.Type()) + if v.Type().Comparable() && z.Type().Comparable() && v.Interface() != z.Interface() { + fmt.Fprintf(w, " [default: %v]", v) + } + } fmt.Fprint(w, "\n") } diff --git a/usage_test.go b/usage_test.go index 4a56e6e..2375e81 100644 --- a/usage_test.go +++ b/usage_test.go @@ -10,28 +10,36 @@ import ( ) func TestWriteUsage(t *testing.T) { - expectedUsage := "usage: example [--verbose] [--dataset DATASET] [--optimize OPTIMIZE] INPUT [OUTPUT [OUTPUT ...]]\n" + expectedUsage := "usage: example [--name NAME] [--value VALUE] [--verbose] [--dataset DATASET] [--optimize OPTIMIZE] [--ids IDS] INPUT [OUTPUT [OUTPUT ...]]\n" - expectedHelp := `usage: example [--verbose] [--dataset DATASET] [--optimize OPTIMIZE] INPUT [OUTPUT [OUTPUT ...]] + expectedHelp := `usage: example [--name NAME] [--value VALUE] [--verbose] [--dataset DATASET] [--optimize OPTIMIZE] [--ids IDS] INPUT [OUTPUT [OUTPUT ...]] positional arguments: input - output positional output + output list of outputs options: + --name NAME name to use [default: Foo Bar] + --value VALUE secret value [default: 42] --verbose, -v verbosity level --dataset DATASET dataset to use --optimize OPTIMIZE, -O OPTIMIZE optimization level + --ids IDS Ids --help, -h display this help and exit ` var args struct { Input string `arg:"positional"` - Output []string `arg:"positional,help:positional output"` + Output []string `arg:"positional,help:list of outputs"` + Name string `arg:"help:name to use"` + Value int `arg:"help:secret value"` Verbose bool `arg:"-v,help:verbosity level"` Dataset string `arg:"help:dataset to use"` Optimize int `arg:"-O,help:optimization level"` + Ids []int64 `arg:"help:Ids"` } + args.Name = "Foo Bar" + args.Value = 42 p, err := NewParser(&args) require.NoError(t, err) |
