From d54d82ee187d659e3e6a4daef58c1943d6e83989 Mon Sep 17 00:00:00 2001 From: Valentin Maerten Date: Wed, 26 Feb 2025 15:04:04 +0100 Subject: [PATCH 1/2] fix: include with dynamic vars --- task_test.go | 13 +++++++++++++ taskfile/ast/vars.go | 2 +- .../include_with_vars_inside_include/Taskfile.yml | 10 ++++++++++ .../include/Taskfile.include.yml | 11 +++++++++++ 4 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 testdata/include_with_vars_inside_include/Taskfile.yml create mode 100644 testdata/include_with_vars_inside_include/include/Taskfile.include.yml diff --git a/task_test.go b/task_test.go index 1ff73c23e2..ad594e5f75 100644 --- a/task_test.go +++ b/task_test.go @@ -2477,6 +2477,19 @@ VAR_2 is included-default-var2 assert.Equal(t, strings.TrimSpace(buff.String()), expectedOutputOrder) } +func TestIncludeWithVarsInInclude(t *testing.T) { + t.Parallel() + + const dir = "testdata/include_with_vars_inside_include" + var buff bytes.Buffer + e := task.Executor{ + Dir: dir, + Stdout: &buff, + Stderr: &buff, + } + require.NoError(t, e.Setup()) +} + func TestIncludedVarsMultiLevel(t *testing.T) { t.Parallel() diff --git a/taskfile/ast/vars.go b/taskfile/ast/vars.go index f620346456..0271ee5c3a 100644 --- a/taskfile/ast/vars.go +++ b/taskfile/ast/vars.go @@ -105,7 +105,7 @@ func (vars *Vars) ToCacheMap() (m map[string]any) { if v.Sh != nil && *v.Sh != "" { // Dynamic variable is not yet resolved; trigger // to be used in templates. - return nil + continue } if v.Live != nil { m[k] = v.Live diff --git a/testdata/include_with_vars_inside_include/Taskfile.yml b/testdata/include_with_vars_inside_include/Taskfile.yml new file mode 100644 index 0000000000..36e451876e --- /dev/null +++ b/testdata/include_with_vars_inside_include/Taskfile.yml @@ -0,0 +1,10 @@ +version: "3" + +vars: + INCLUDE: include + FOO: + sh : echo bar + +includes: + included1: + taskfile: '{{.INCLUDE}}/Taskfile.include.yml' diff --git a/testdata/include_with_vars_inside_include/include/Taskfile.include.yml b/testdata/include_with_vars_inside_include/include/Taskfile.include.yml new file mode 100644 index 0000000000..3bb7a68e05 --- /dev/null +++ b/testdata/include_with_vars_inside_include/include/Taskfile.include.yml @@ -0,0 +1,11 @@ +version: "3" + +vars: + VAR_1: '{{.VAR_1 | default "included-default-var1"}}' + VAR_2: '{{.VAR_2 | default "included-default-var2"}}' + +tasks: + task1: + cmds: + - echo "VAR_1 is {{.VAR_1}}" + - echo "VAR_2 is {{.VAR_2}}" From 5001806d25dbbd5c958d0017ebfcca9167685702 Mon Sep 17 00:00:00 2001 From: Valentin Maerten Date: Wed, 26 Feb 2025 15:07:26 +0100 Subject: [PATCH 2/2] tidy up --- .../include/Taskfile.include.yml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/testdata/include_with_vars_inside_include/include/Taskfile.include.yml b/testdata/include_with_vars_inside_include/include/Taskfile.include.yml index 3bb7a68e05..5db6fe96a4 100644 --- a/testdata/include_with_vars_inside_include/include/Taskfile.include.yml +++ b/testdata/include_with_vars_inside_include/include/Taskfile.include.yml @@ -1,11 +1 @@ version: "3" - -vars: - VAR_1: '{{.VAR_1 | default "included-default-var1"}}' - VAR_2: '{{.VAR_2 | default "included-default-var2"}}' - -tasks: - task1: - cmds: - - echo "VAR_1 is {{.VAR_1}}" - - echo "VAR_2 is {{.VAR_2}}"