aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Paris <[email protected]>2015-10-14 18:13:34 -0400
committerSteve Francia <[email protected]>2015-12-18 08:45:27 -0500
commit76a42eaba0307accce867b21d302cc6586bc3ad3 (patch)
tree538fe50038d772d1796e34c27cb4a9ef0a2f6f16
parent08b1a584251b5b62f458943640fc8ebd4d50aaa5 (diff)
Better support golang flag short values
In golang flags -bob and --bob are the same thing. Not so in pflags. But when a golang flag was just -b or --b we would still only support --b. This was a little awkward to users. If a golang flag was declared as a single character, support both the -b and --b versions in the pflag version.
-rw-r--r--golangflag.go7
1 files changed, 7 insertions, 0 deletions
diff --git a/golangflag.go b/golangflag.go
index a8c24ef..b056147 100644
--- a/golangflag.go
+++ b/golangflag.go
@@ -61,6 +61,9 @@ func (v *flagValueWrapper) Type() string {
}
// PFlagFromGoFlag will return a *pflag.Flag given a *flag.Flag
+// If the *flag.Flag.Name was a single character (ex: `v`) it will be accessiblei
+// with both `-v` and `--v` in flags. If the golang flag was more than a single
+// character (ex: `verbose`) it will only be accessible via `--verbose`
func PFlagFromGoFlag(goflag *goflag.Flag) *Flag {
// Remember the default value as a string; it won't change.
flag := &Flag{
@@ -71,6 +74,10 @@ func PFlagFromGoFlag(goflag *goflag.Flag) *Flag {
//DefValue: goflag.DefValue,
DefValue: goflag.Value.String(),
}
+ // Ex: if the golang flag was -v, allow both -v and --v to work
+ if len(flag.Name) == 1 {
+ flag.Shorthand = flag.Name
+ }
if fv, ok := goflag.Value.(goBoolFlag); ok && fv.IsBoolFlag() {
flag.NoOptDefVal = "true"
}