Better help for maps.
This commit is contained in:
+15
-15
@@ -66,13 +66,13 @@ func TestHelp(t *testing.T) {
|
||||
A test app.
|
||||
|
||||
Flags:
|
||||
--help Show context-sensitive help.
|
||||
--string=STRING A string flag.
|
||||
--bool A bool flag with very long help that wraps a lot and is
|
||||
verbose and is really verbose.
|
||||
--slice=STR,... A slice of strings.
|
||||
--map=KEY=VALUE A map of strings to ints.
|
||||
--required A required flag.
|
||||
--help Show context-sensitive help.
|
||||
--string=STRING A string flag.
|
||||
--bool A bool flag with very long help that wraps a lot and is
|
||||
verbose and is really verbose.
|
||||
--slice=STR,... A slice of strings.
|
||||
--map=KEY=VALUE;... A map of strings to ints.
|
||||
--required A required flag.
|
||||
|
||||
Commands:
|
||||
one --required
|
||||
@@ -106,15 +106,15 @@ Sub-sub-arg.
|
||||
Detailed help provided through the HelpProvider interface.
|
||||
|
||||
Flags:
|
||||
--help Show context-sensitive help.
|
||||
--string=STRING A string flag.
|
||||
--bool A bool flag with very long help that wraps a lot and is
|
||||
verbose and is really verbose.
|
||||
--slice=STR,... A slice of strings.
|
||||
--map=KEY=VALUE A map of strings to ints.
|
||||
--required A required flag.
|
||||
--help Show context-sensitive help.
|
||||
--string=STRING A string flag.
|
||||
--bool A bool flag with very long help that wraps a lot and is
|
||||
verbose and is really verbose.
|
||||
--slice=STR,... A slice of strings.
|
||||
--map=KEY=VALUE;... A map of strings to ints.
|
||||
--required A required flag.
|
||||
|
||||
--flag=STRING Nested flag under two.
|
||||
--flag=STRING Nested flag under two.
|
||||
--required-two
|
||||
|
||||
--required-three
|
||||
|
||||
@@ -357,7 +357,7 @@ func (f *Flag) FormatPlaceHolder() string {
|
||||
return f.PlaceHolder + tail
|
||||
}
|
||||
if f.Value.IsMap() {
|
||||
return "KEY=VALUE" + tail
|
||||
return "KEY=VALUE;..."
|
||||
}
|
||||
return strings.ToUpper(f.Name) + tail
|
||||
}
|
||||
|
||||
+10
@@ -70,6 +70,16 @@ func jsonDecodeValue(sep rune, value interface{}) (string, error) {
|
||||
out = append(out, sel)
|
||||
}
|
||||
return JoinEscaped(out, sep), nil
|
||||
case map[string]interface{}:
|
||||
out := []string{}
|
||||
for key, el := range v {
|
||||
sel, err := jsonDecodeValue(sep, el)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
out = append(out, fmt.Sprintf("%s=%s", key, sel))
|
||||
}
|
||||
return JoinEscaped(out, ';'), nil
|
||||
case bool:
|
||||
if v {
|
||||
return "true", nil
|
||||
|
||||
Reference in New Issue
Block a user