diff options
| author | Tamal Saha <[email protected]> | 2018-08-21 07:45:17 -0400 |
|---|---|---|
| committer | Eric Paris <[email protected]> | 2018-08-21 07:45:17 -0400 |
| commit | d929dcbb10863323c436af3cf76cb16a6dfc9b29 (patch) | |
| tree | 57482235bc31513e488433c7275f5d5f104edebc /string_to_string.go | |
| parent | 947b89bd1b7dabfed991ac30e1a56f5193f0c88b (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.go | 19 |
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) |
