From 292cf7583659d0eaf978d590b95974bbdcc689f6 Mon Sep 17 00:00:00 2001 From: Dan Ballweg Date: Wed, 23 Feb 2022 16:53:46 -0600 Subject: [PATCH 1/3] add vars to included taskfiles --- taskfile/included_taskfile.go | 3 +++ taskfile/read/taskfile.go | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/taskfile/included_taskfile.go b/taskfile/included_taskfile.go index a0dd8866..332f986e 100644 --- a/taskfile/included_taskfile.go +++ b/taskfile/included_taskfile.go @@ -12,6 +12,7 @@ type IncludedTaskfile struct { Dir string Optional bool AdvancedImport bool + Vars *Vars } // IncludedTaskfiles represents information about included tasksfiles @@ -94,6 +95,7 @@ func (it *IncludedTaskfile) UnmarshalYAML(unmarshal func(interface{}) error) err Taskfile string Dir string Optional bool + Vars *Vars } if err := unmarshal(&includedTaskfile); err != nil { return err @@ -102,5 +104,6 @@ func (it *IncludedTaskfile) UnmarshalYAML(unmarshal func(interface{}) error) err it.Dir = includedTaskfile.Dir it.Optional = includedTaskfile.Optional it.AdvancedImport = true + it.Vars = includedTaskfile.Vars return nil } diff --git a/taskfile/read/taskfile.go b/taskfile/read/taskfile.go index 6d54f356..ce103d51 100644 --- a/taskfile/read/taskfile.go +++ b/taskfile/read/taskfile.go @@ -62,6 +62,7 @@ func Taskfile(dir string, entrypoint string) (*taskfile.Taskfile, error) { Dir: tr.Replace(includedTask.Dir), Optional: includedTask.Optional, AdvancedImport: includedTask.AdvancedImport, + Vars: includedTask.Vars, } if err := tr.Err(); err != nil { return err @@ -109,6 +110,12 @@ func Taskfile(dir string, entrypoint string) (*taskfile.Taskfile, error) { } for _, task := range includedTaskfile.Tasks { + if includedTask.Vars != nil { + if task.Vars == nil { + task.Vars = &taskfile.Vars{} + } + task.Vars.Merge(includedTask.Vars) + } if !filepath.IsAbs(task.Dir) { task.Dir = filepath.Join(includedTask.Dir, task.Dir) } From 2f18f7927d5ada0d408de38f7dbc6ed8db4213e7 Mon Sep 17 00:00:00 2001 From: Dan Ballweg Date: Thu, 24 Feb 2022 13:17:20 -0600 Subject: [PATCH 2/3] test include variables --- task_test.go | 29 +++++++++++++++++++ testdata/include_with_vars/Taskfile.yml | 20 +++++++++++++ .../include/Taskfile.include.yml | 11 +++++++ 3 files changed, 60 insertions(+) create mode 100644 testdata/include_with_vars/Taskfile.yml create mode 100644 testdata/include_with_vars/include/Taskfile.include.yml diff --git a/task_test.go b/task_test.go index 40cf95c3..d4f820b1 100644 --- a/task_test.go +++ b/task_test.go @@ -1218,3 +1218,32 @@ Bye! t.Log(buff.String()) assert.Equal(t, strings.TrimSpace(buff.String()), expectedOutputOrder) } + +func TestIncludedVars(t *testing.T) { + const dir = "testdata/include_with_vars" + var buff bytes.Buffer + e := task.Executor{ + Dir: dir, + Stdout: &buff, + Stderr: &buff, + } + assert.NoError(t, e.Setup()) + + expectedOutputOrder := strings.TrimSpace(` +task: [included1:task1] echo "VAR_1 is included1-var1" +VAR_1 is included1-var1 +task: [included1:task1] echo "VAR_2 is incldued-default-var2" +VAR_2 is incldued-default-var2 +task: [included2:task1] echo "VAR_1 is included2-var1" +VAR_1 is included2-var1 +task: [included2:task1] echo "VAR_2 is incldued-default-var2" +VAR_2 is incldued-default-var2 +task: [included3:task1] echo "VAR_1 is included-default-var1" +VAR_1 is included-default-var1 +task: [included3:task1] echo "VAR_2 is incldued-default-var2" +VAR_2 is incldued-default-var2 +`) + assert.NoError(t, e.Run(context.Background(), taskfile.Call{Task: "task1"})) + t.Log(buff.String()) + assert.Equal(t, strings.TrimSpace(buff.String()), expectedOutputOrder) +} diff --git a/testdata/include_with_vars/Taskfile.yml b/testdata/include_with_vars/Taskfile.yml new file mode 100644 index 00000000..295e3c2b --- /dev/null +++ b/testdata/include_with_vars/Taskfile.yml @@ -0,0 +1,20 @@ +version: "3" + +includes: + included1: + taskfile: include/Taskfile.include.yml + vars: + VAR_1: included1-var1 + included2: + taskfile: include/Taskfile.include.yml + vars: + VAR_1: included2-var1 + included3: + taskfile: include/Taskfile.include.yml + +tasks: + task1: + cmds: + - task: included1:task1 + - task: included2:task1 + - task: included3:task1 \ No newline at end of file diff --git a/testdata/include_with_vars/include/Taskfile.include.yml b/testdata/include_with_vars/include/Taskfile.include.yml new file mode 100644 index 00000000..6461d9ce --- /dev/null +++ b/testdata/include_with_vars/include/Taskfile.include.yml @@ -0,0 +1,11 @@ +version: "3" + +vars: + VAR_1: included-default-var1 + VAR_2: incldued-default-var2 + +tasks: + task1: + cmds: + - echo "VAR_1 is {{.VAR_1}}" + - echo "VAR_2 is {{.VAR_2}}" \ No newline at end of file From 60fa6e6c0a5992b12c6425b0d797745e337dc36d Mon Sep 17 00:00:00 2001 From: Dan Ballweg Date: Thu, 24 Feb 2022 13:18:35 -0600 Subject: [PATCH 3/3] update --- testdata/include_with_vars/Taskfile.yml | 2 +- testdata/include_with_vars/include/Taskfile.include.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/testdata/include_with_vars/Taskfile.yml b/testdata/include_with_vars/Taskfile.yml index 295e3c2b..aee8f515 100644 --- a/testdata/include_with_vars/Taskfile.yml +++ b/testdata/include_with_vars/Taskfile.yml @@ -17,4 +17,4 @@ tasks: cmds: - task: included1:task1 - task: included2:task1 - - task: included3:task1 \ No newline at end of file + - task: included3:task1 diff --git a/testdata/include_with_vars/include/Taskfile.include.yml b/testdata/include_with_vars/include/Taskfile.include.yml index 6461d9ce..dd2a4e65 100644 --- a/testdata/include_with_vars/include/Taskfile.include.yml +++ b/testdata/include_with_vars/include/Taskfile.include.yml @@ -8,4 +8,4 @@ tasks: task1: cmds: - echo "VAR_1 is {{.VAR_1}}" - - echo "VAR_2 is {{.VAR_2}}" \ No newline at end of file + - echo "VAR_2 is {{.VAR_2}}"