diff --git a/task_test.go b/task_test.go index 6d4fdce2..2d3cc361 100644 --- a/task_test.go +++ b/task_test.go @@ -758,7 +758,11 @@ func TestIncludesMultiLevel(t *testing.T) { Dir: "testdata/includes_multi_level", Target: "default", TrimSpace: true, - Files: map[string]string{}, + Files: map[string]string{ + "called_one.txt": "one", + "called_two.txt": "two", + "called_three.txt": "three", + }, } tt.Run(t) } diff --git a/taskfile/read/taskfile.go b/taskfile/read/taskfile.go index 58b720f9..c0546741 100644 --- a/taskfile/read/taskfile.go +++ b/taskfile/read/taskfile.go @@ -76,6 +76,13 @@ func Taskfile(readerNode *ReaderNode) (*taskfile.Taskfile, error) { if !filepath.IsAbs(path) { path = filepath.Join(readerNode.Dir, path) } + path, err = exists(path) + if err != nil { + if includedTask.Optional { + return nil + } + return err + } includeReaderNode := &ReaderNode{ Dir: filepath.Dir(path), diff --git a/testdata/includes_multi_level/Taskfile.yml b/testdata/includes_multi_level/Taskfile.yml index 0639601f..3734d069 100644 --- a/testdata/includes_multi_level/Taskfile.yml +++ b/testdata/includes_multi_level/Taskfile.yml @@ -1,9 +1,11 @@ version: '3' includes: - 'one': ./one/Taskfile.yml + 'one': ./one/ tasks: default: cmds: + - task: one:default - task: one:two:default + - task: one:two:three:default diff --git a/testdata/includes_multi_level/called_one.txt b/testdata/includes_multi_level/called_one.txt new file mode 100644 index 00000000..5626abf0 --- /dev/null +++ b/testdata/includes_multi_level/called_one.txt @@ -0,0 +1 @@ +one diff --git a/testdata/includes_multi_level/called_three.txt b/testdata/includes_multi_level/called_three.txt new file mode 100644 index 00000000..2bdf67ab --- /dev/null +++ b/testdata/includes_multi_level/called_three.txt @@ -0,0 +1 @@ +three diff --git a/testdata/includes_multi_level/called_two.txt b/testdata/includes_multi_level/called_two.txt new file mode 100644 index 00000000..f719efd4 --- /dev/null +++ b/testdata/includes_multi_level/called_two.txt @@ -0,0 +1 @@ +two diff --git a/testdata/includes_multi_level/one/Taskfile.yml b/testdata/includes_multi_level/one/Taskfile.yml index 30316593..aaf899f2 100644 --- a/testdata/includes_multi_level/one/Taskfile.yml +++ b/testdata/includes_multi_level/one/Taskfile.yml @@ -1,9 +1,7 @@ version: '3' includes: - 'two': ./two/Taskfile.yml + 'two': ./two/ tasks: - level1: - cmds: - - echo "hello level 1" + default: echo one > called_one.txt \ No newline at end of file diff --git a/testdata/includes_multi_level/one/two/Taskfile.yml b/testdata/includes_multi_level/one/two/Taskfile.yml index 83ae318e..ed393064 100644 --- a/testdata/includes_multi_level/one/two/Taskfile.yml +++ b/testdata/includes_multi_level/one/two/Taskfile.yml @@ -1,6 +1,7 @@ version: '3' +includes: + 'three': ./three/Taskfile.yml + tasks: - default: - cmds: - - echo "called_dep" > called_dep.txt + default: echo two > called_two.txt diff --git a/testdata/includes_multi_level/one/two/three/Taskfile.yml b/testdata/includes_multi_level/one/two/three/Taskfile.yml new file mode 100644 index 00000000..db4152be --- /dev/null +++ b/testdata/includes_multi_level/one/two/three/Taskfile.yml @@ -0,0 +1,4 @@ +version: '3' + +tasks: + default: echo three > called_three.txt \ No newline at end of file