summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Flint <[email protected]>2015-11-26 22:10:36 +1030
committerAlex Flint <[email protected]>2015-11-26 22:10:36 +1030
commitce5525d7767a3016c46f0f07e26a5db4b26372c1 (patch)
treec04908e5ffca0afa26f9b3b92c11a74621a55a17
parent5db9c77fa32bd444360f8376ddfa7bc209813b20 (diff)
parent670c7b787d9a475c663e3868eeb226ff7c5e78ad (diff)
Merge pull request #19 from walle/add_default_value_to_usage
Add default values to usage
-rw-r--r--usage.go10
-rw-r--r--usage_test.go10
2 files changed, 18 insertions, 2 deletions
diff --git a/usage.go b/usage.go
index 9404015..fa01229 100644
--- a/usage.go
+++ b/usage.go
@@ -5,6 +5,7 @@ import (
"io"
"os"
"path/filepath"
+ "reflect"
"strings"
)
@@ -101,6 +102,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.Interface() != z.Interface() {
+ fmt.Fprintf(w, " [default: %v]", v)
+ }
+ }
fmt.Fprint(w, "\n")
}
diff --git a/usage_test.go b/usage_test.go
index 5a9199c..01c9542 100644
--- a/usage_test.go
+++ b/usage_test.go
@@ -10,15 +10,17 @@ 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] 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] INPUT [OUTPUT [OUTPUT ...]]
positional arguments:
input
output
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
@@ -28,10 +30,14 @@ options:
var args struct {
Input string `arg:"positional"`
Output []string `arg:"positional"`
+ 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"`
}
+ args.Name = "Foo Bar"
+ args.Value = 42
p, err := NewParser(&args)
require.NoError(t, err)