aboutsummaryrefslogtreecommitdiff
path: root/string_to_string.go
diff options
context:
space:
mode:
authorTamal Saha <[email protected]>2018-08-21 07:45:17 -0400
committerEric Paris <[email protected]>2018-08-21 07:45:17 -0400
commitd929dcbb10863323c436af3cf76cb16a6dfc9b29 (patch)
tree57482235bc31513e488433c7275f5d5f104edebc /string_to_string.go
parent947b89bd1b7dabfed991ac30e1a56f5193f0c88b (diff)
Handle single string=>string flags without quotes (#179)
OK: --f1 "a=5,6" --f2 b=3,4 --f3 "c=5,6",d=7 Not OK: --f4 c="5,6"
Diffstat (limited to 'string_to_string.go')
-rw-r--r--string_to_string.go19
1 files changed, 15 insertions, 4 deletions
diff --git a/string_to_string.go b/string_to_string.go
index 64892db..890a01a 100644
--- a/string_to_string.go
+++ b/string_to_string.go
@@ -22,11 +22,22 @@ func newStringToStringValue(val map[string]string, p *map[string]string) *string
// Format: a=1,b=2
func (s *stringToStringValue) Set(val string) error {
- r := csv.NewReader(strings.NewReader(val))
- ss, err := r.Read()
- if err != nil {
- return err
+ var ss []string
+ n := strings.Count(val, "=")
+ switch n {
+ case 0:
+ return fmt.Errorf("%s must be formatted as key=value", val)
+ case 1:
+ ss = append(ss, strings.Trim(val, `"`))
+ default:
+ r := csv.NewReader(strings.NewReader(val))
+ var err error
+ ss, err = r.Read()
+ if err != nil {
+ return err
+ }
}
+
out := make(map[string]string, len(ss))
for _, pair := range ss {
kv := strings.SplitN(pair, "=", 2)