aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--flag.go5
-rw-r--r--string_to_string.go10
2 files changed, 13 insertions, 2 deletions
diff --git a/flag.go b/flag.go
index 3f2a084..dbb3907 100644
--- a/flag.go
+++ b/flag.go
@@ -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)
}