diff options
| -rw-r--r-- | flag.go | 5 | ||||
| -rw-r--r-- | string_to_string.go | 10 |
2 files changed, 13 insertions, 2 deletions
@@ -1173,7 +1173,7 @@ func (f *FlagSet) Parse(arguments []string) error { case ContinueOnError: return err case ExitOnError: - if err == ErrHelp { + if errors.Is(err, ErrHelp) { os.Exit(0) } fmt.Fprintln(f.Output(), err) @@ -1202,6 +1202,9 @@ func (f *FlagSet) ParseAll(arguments []string, fn func(flag *Flag, value string) case ContinueOnError: return err case ExitOnError: + if errors.Is(err, ErrHelp) { + os.Exit(0) + } fmt.Fprintln(f.Output(), err) os.Exit(2) case PanicOnError: diff --git a/string_to_string.go b/string_to_string.go index 890a01a..1d1e3bf 100644 --- a/string_to_string.go +++ b/string_to_string.go @@ -4,6 +4,7 @@ import ( "bytes" "encoding/csv" "fmt" + "sort" "strings" ) @@ -62,8 +63,15 @@ func (s *stringToStringValue) Type() string { } func (s *stringToStringValue) String() string { + keys := make([]string, 0, len(*s.value)) + for k := range *s.value { + keys = append(keys, k) + } + sort.Strings(keys) + records := make([]string, 0, len(*s.value)>>1) - for k, v := range *s.value { + for _, k := range keys { + v := (*s.value)[k] records = append(records, k+"="+v) } |
