From 0db3e9a05da35a6bb6a99df4dcb9f0a30ba11db6 Mon Sep 17 00:00:00 2001 From: Andrey Nering Date: Sat, 25 Mar 2017 11:01:44 -0300 Subject: [PATCH] Fix "=" not being reconized in variables/environment variables Fixes #19 --- task_test.go | 1 + testdata/vars/Taskfile.yml | 7 +++++++ variable_handling.go | 24 ++++++++++-------------- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/task_test.go b/task_test.go index 71f615cf..a82fcfb7 100644 --- a/task_test.go +++ b/task_test.go @@ -57,6 +57,7 @@ func TestVars(t *testing.T) { {"bar.txt", "bar"}, {"foo2.txt", "foo2"}, {"bar2.txt", "bar2"}, + {"equal.txt", "foo=bar"}, } for _, f := range files { diff --git a/testdata/vars/Taskfile.yml b/testdata/vars/Taskfile.yml index 646f4e5c..e51cf55e 100644 --- a/testdata/vars/Taskfile.yml +++ b/testdata/vars/Taskfile.yml @@ -2,11 +2,18 @@ default: deps: [hello] hello: + deps: [set-equal] cmds: - echo {{.FOO}} > foo.txt - echo {{.BAR}} > bar.txt - echo {{.FOO2}} > foo2.txt - echo {{.BAR2}} > bar2.txt + - echo {{.EQUAL}} > equal.txt vars: FOO: foo BAR: $echo bar + +set-equal: + set: EQUAL + cmds: + - echo foo=bar diff --git a/variable_handling.go b/variable_handling.go index 976938c6..ca075ba5 100644 --- a/variable_handling.go +++ b/variable_handling.go @@ -97,21 +97,17 @@ func ReplaceVariables(initial string, vars map[string]string) (string, error) { // GetEnvironmentVariables returns environment variables as map func getEnvironmentVariables() map[string]string { - type getKeyValFunc func(item string) (key, val string) - getEnvironment := func(data []string, getKeyVal getKeyValFunc) map[string]string { - items := make(map[string]string) - for _, item := range data { - key, val := getKeyVal(item) - items[key] = val - } - return items + var ( + env = os.Environ() + m = make(map[string]string, len(env)) + ) + + for _, e := range env { + keyVal := strings.SplitN(e, "=", 2) + key, val := keyVal[0], keyVal[1] + m[key] = val } - return getEnvironment(os.Environ(), func(item string) (key, val string) { - splits := strings.Split(item, "=") - key = splits[0] - val = splits[1] - return - }) + return m } func readTaskvarsFile() (map[string]string, error) {