From e086b654aa3dcdf2be85c125f1af5ff7cad6d0d1 Mon Sep 17 00:00:00 2001 From: Andrey Nering Date: Tue, 12 Jan 2021 11:09:46 -0300 Subject: [PATCH] Environment from .env file should be available as variables Fixes #379 --- CHANGELOG.md | 5 +++++ internal/compiler/v3/compiler_v3.go | 4 ++++ task.go | 1 + task_test.go | 1 + testdata/vars/v3/.env | 1 + testdata/vars/v3/Taskfile.yml | 5 +++++ 6 files changed, 17 insertions(+) create mode 100644 testdata/vars/v3/.env diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f16a2a7..689794ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## Unreleased + +- Fixed environment from .env files not being available as variables + ([#379](https://github.com/go-task/task/issues/379)). + ## v3.2.1 - Fixed some bugs and regressions regarding dynamic variables and directories diff --git a/internal/compiler/v3/compiler_v3.go b/internal/compiler/v3/compiler_v3.go index 9530dd8f..308171d4 100644 --- a/internal/compiler/v3/compiler_v3.go +++ b/internal/compiler/v3/compiler_v3.go @@ -20,6 +20,7 @@ var _ compiler.Compiler = &CompilerV3{} type CompilerV3 struct { Dir string + TaskfileEnv *taskfile.Vars TaskfileVars *taskfile.Vars Logger *logger.Logger @@ -54,6 +55,9 @@ func (c *CompilerV3) GetVariables(t *taskfile.Task, call taskfile.Call) (*taskfi } rangeFunc := getRangeFunc(c.Dir) + if err := c.TaskfileEnv.Range(rangeFunc); err != nil { + return nil, err + } if err := c.TaskfileVars.Range(rangeFunc); err != nil { return nil, err } diff --git a/task.go b/task.go index 3a83fc16..92432306 100644 --- a/task.go +++ b/task.go @@ -168,6 +168,7 @@ func (e *Executor) Setup() error { } else { e.Compiler = &compilerv3.CompilerV3{ Dir: e.Dir, + TaskfileEnv: e.Taskfile.Env, TaskfileVars: e.Taskfile.Vars, Logger: e.Logger, } diff --git a/task_test.go b/task_test.go index 1b131921..e2369b20 100644 --- a/task_test.go +++ b/task_test.go @@ -126,6 +126,7 @@ func TestVarsV3(t *testing.T) { "var-order.txt": "ABCDEF\n", "dependent-sh.txt": "123456\n", "with-call.txt": "Hi, ABC123!\n", + "from-dot-env.txt": "From .env file\n", }, } tt.Run(t) diff --git a/testdata/vars/v3/.env b/testdata/vars/v3/.env new file mode 100644 index 00000000..c4535c35 --- /dev/null +++ b/testdata/vars/v3/.env @@ -0,0 +1 @@ +DOT_ENV_VAR=From .env file diff --git a/testdata/vars/v3/Taskfile.yml b/testdata/vars/v3/Taskfile.yml index 4c581115..187c48bd 100644 --- a/testdata/vars/v3/Taskfile.yml +++ b/testdata/vars/v3/Taskfile.yml @@ -1,5 +1,7 @@ version: '3' +dotenv: [.env] + vars: VAR_A: A VAR_B: '{{.VAR_A}}B' @@ -15,6 +17,7 @@ tasks: - task: var-order - task: dependent-sh - task: with-call + - task: from-dot-env missing-var: echo '{{.NON_EXISTING_VAR}}' > missing-var.txt @@ -44,3 +47,5 @@ tasks: MESSAGE: Hi, {{.ABC123}}! cmds: - echo "{{.MESSAGE}}" > with-call.txt + + from-dot-env: echo '{{.DOT_ENV_VAR}}' > from-dot-env.txt