diff --git a/help_test.go b/help_test.go index d8af552..91068c5 100644 --- a/help_test.go +++ b/help_test.go @@ -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 diff --git a/model.go b/model.go index b5a613d..2915892 100644 --- a/model.go +++ b/model.go @@ -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 } diff --git a/resolver.go b/resolver.go index 85063d9..353f63a 100644 --- a/resolver.go +++ b/resolver.go @@ -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