diff --git a/helper/variables/flag.go b/helper/variables/flag.go index 393586234..497b6fb1e 100644 --- a/helper/variables/flag.go +++ b/helper/variables/flag.go @@ -21,11 +21,18 @@ func (v *Flag) Set(raw string) error { } key, input := raw[0:idx], raw[idx+1:] + if key == "" { + return fmt.Errorf("No key to left '=' in arg: %s", raw) + } + value, err := ParseInput(input) if err != nil { return err } + // Trim the whitespace on the key + key = strings.TrimSpace(key) + *v = Merge(*v, map[string]interface{}{key: value}) return nil } diff --git a/helper/variables/flag_test.go b/helper/variables/flag_test.go index f88b42cd1..66c8d1a65 100644 --- a/helper/variables/flag_test.go +++ b/helper/variables/flag_test.go @@ -19,6 +19,12 @@ func TestFlag(t *testing.T) { Output map[string]interface{} Error bool }{ + { + "=value", + nil, + true, + }, + { "key=value", map[string]interface{}{"key": "value"}, @@ -43,6 +49,24 @@ func TestFlag(t *testing.T) { false, }, + { + "key =value", + map[string]interface{}{"key": "value"}, + false, + }, + + { + "key = value", + map[string]interface{}{"key": " value"}, + false, + }, + + { + `key = "value"`, + map[string]interface{}{"key": "value"}, + false, + }, + { "map.key=foo", map[string]interface{}{"map.key": "foo"},