Skip to content

Commit

Permalink
fix: include flatten with a default task (#1778)
Browse files Browse the repository at this point in the history
  • Loading branch information
vmaerten authored Sep 6, 2024
1 parent dd9cec6 commit 0e2c9cc
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 5 deletions.
2 changes: 2 additions & 0 deletions task_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1240,6 +1240,8 @@ func TestIncludesFlatten(t *testing.T) {
expectedOutput string
}{
{name: "included flatten", taskfile: "Taskfile.yml", task: "gen", expectedOutput: "gen from included\n"},
{name: "included flatten with default", taskfile: "Taskfile.yml", task: "default", expectedOutput: "default from included flatten\n"},
{name: "included flatten can call entrypoint tasks", taskfile: "Taskfile.yml", task: "from_entrypoint", expectedOutput: "from entrypoint\n"},
{name: "included flatten with deps", taskfile: "Taskfile.yml", task: "with_deps", expectedOutput: "gen from included\nwith_deps from included\n"},
{name: "included flatten nested", taskfile: "Taskfile.yml", task: "from_nested", expectedOutput: "from nested\n"},
{name: "included flatten multiple same task", taskfile: "Taskfile.multiple.yml", task: "gen", expectedErr: true, expectedOutput: "task: Found multiple tasks (gen) included by \"included\"\""},
Expand Down
4 changes: 2 additions & 2 deletions taskfile/ast/tasks.go
Original file line number Diff line number Diff line change
Expand Up @@ -112,12 +112,12 @@ func (t1 *Tasks) Merge(t2 Tasks, include *Include, includedTaskfileVars *Vars) e
return nil
})

// If the included Taskfile has a default task and the parent namespace has
// If the included Taskfile has a default task, being not flattened and the parent namespace has
// no task with a matching name, we can add an alias so that the user can
// run the included Taskfile's default task without specifying its full
// name. If the parent namespace has aliases, we add another alias for each
// of them.
if t2.Get("default") != nil && t1.Get(include.Namespace) == nil {
if t2.Get("default") != nil && t1.Get(include.Namespace) == nil && !include.Flatten {
defaultTaskName := fmt.Sprintf("%s:default", include.Namespace)
t1.Get(defaultTaskName).Aliases = append(t1.Get(defaultTaskName).Aliases, include.Namespace)
t1.Get(defaultTaskName).Aliases = slices.Concat(t1.Get(defaultTaskName).Aliases, include.Aliases)
Expand Down
3 changes: 3 additions & 0 deletions testdata/includes_flatten/Taskfile.with_default.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
version: '3'
tasks:
default: echo "default from included flatten"
8 changes: 5 additions & 3 deletions testdata/includes_flatten/Taskfile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@ includes:
taskfile: ./included
dir: ./included
flatten: true
with_default:
taskfile: ./Taskfile.with_default.yml
flatten: true

tasks:
default:
cmds:
- echo root_directory > root_directory.txt
from_entrypoint: echo "from entrypoint"


0 comments on commit 0e2c9cc

Please sign in to comment.