Skip to content

Commit 3397f28

Browse files
authored
fix: handle int and float env variable by converting them to string (#1641)
1 parent 78a69c4 commit 3397f28

File tree

3 files changed

+23
-7
lines changed

3 files changed

+23
-7
lines changed

internal/env/env.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,25 @@ func Get(t *ast.Task) []string {
1313
}
1414

1515
environ := os.Environ()
16-
1716
for k, v := range t.Env.ToCacheMap() {
18-
str, isString := v.(string)
19-
if !isString {
17+
if !isTypeAllowed(v) {
2018
continue
2119
}
2220

2321
if _, alreadySet := os.LookupEnv(k); alreadySet {
2422
continue
2523
}
26-
27-
environ = append(environ, fmt.Sprintf("%s=%s", k, str))
24+
environ = append(environ, fmt.Sprintf("%s=%v", k, v))
2825
}
2926

3027
return environ
3128
}
29+
30+
func isTypeAllowed(v any) bool {
31+
switch v.(type) {
32+
case string, int, float32, float64:
33+
return true
34+
default:
35+
return false
36+
}
37+
}

task_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,9 @@ func TestEnv(t *testing.T) {
101101
Target: "default",
102102
TrimSpace: false,
103103
Files: map[string]string{
104-
"local.txt": "GOOS='linux' GOARCH='amd64' CGO_ENABLED='0'\n",
105-
"global.txt": "FOO='foo' BAR='overriden' BAZ='baz'\n",
104+
"local.txt": "GOOS='linux' GOARCH='amd64' CGO_ENABLED='0'\n",
105+
"global.txt": "FOO='foo' BAR='overriden' BAZ='baz'\n",
106+
"multiple_type.txt": "FOO='1' BAR='' BAZ='1.1'\n",
106107
},
107108
}
108109
tt.Run(t)

testdata/env/Taskfile.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ tasks:
1414
cmds:
1515
- task: local
1616
- task: global
17+
- task: multiple_type
1718

1819
local:
1920
vars:
@@ -31,3 +32,11 @@ tasks:
3132
BAR: overriden
3233
cmds:
3334
- echo "FOO='$FOO' BAR='$BAR' BAZ='$BAZ'" > global.txt
35+
36+
multiple_type:
37+
env:
38+
FOO: 1
39+
BAR: true
40+
BAZ: 1.1
41+
cmds:
42+
- echo "FOO='$FOO' BAR='$BAR' BAZ='$BAZ'" > multiple_type.txt

0 commit comments

Comments
 (0)