|
|
@@ -14,7 +14,12 @@
|
|
|
|
|
|
package flags
|
|
|
|
|
|
-import "errors"
|
|
|
+import (
|
|
|
+ "errors"
|
|
|
+ "flag"
|
|
|
+ "sort"
|
|
|
+ "strings"
|
|
|
+)
|
|
|
|
|
|
// NewStringsFlag creates a new string flag for which any one of the given
|
|
|
// strings is a valid value, and any other value is an error.
|
|
|
@@ -47,3 +52,34 @@ func (ss *StringsFlag) Set(s string) error {
|
|
|
func (ss *StringsFlag) String() string {
|
|
|
return ss.val
|
|
|
}
|
|
|
+
|
|
|
+// StringsValueV2 wraps "sort.StringSlice".
|
|
|
+type StringsValueV2 sort.StringSlice
|
|
|
+
|
|
|
+// Set parses a command line set of strings, separated by comma.
|
|
|
+// Implements "flag.Value" interface.
|
|
|
+func (ss *StringsValueV2) Set(s string) error {
|
|
|
+ *ss = strings.Split(s, ",")
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// String implements "flag.Value" interface.
|
|
|
+func (ss *StringsValueV2) String() string { return strings.Join(*ss, ",") }
|
|
|
+
|
|
|
+// NewStringsValueV2 implements string slice as "flag.Value" interface.
|
|
|
+// Given value is to be separated by comma.
|
|
|
+func NewStringsValueV2(s string) (ss *StringsValueV2) {
|
|
|
+ if s == "" {
|
|
|
+ return &StringsValueV2{}
|
|
|
+ }
|
|
|
+ ss = new(StringsValueV2)
|
|
|
+ if err := ss.Set(s); err != nil {
|
|
|
+ plog.Panicf("new StringsValueV2 should never fail: %v", err)
|
|
|
+ }
|
|
|
+ return ss
|
|
|
+}
|
|
|
+
|
|
|
+// StringsFromFlagV2 returns a string slice from the flag.
|
|
|
+func StringsFromFlagV2(fs *flag.FlagSet, flagName string) []string {
|
|
|
+ return []string(*fs.Lookup(flagName).Value.(*StringsValueV2))
|
|
|
+}
|