Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions task.go
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,6 @@ func (e *Executor) RunTask(ctx context.Context, call *Call) error {
if t.Method != "" {
method = t.Method
}

upToDate, err := fingerprint.IsTaskUpToDate(ctx, t,
fingerprint.WithMethod(method),
fingerprint.WithTempDir(e.TempDir.Fingerprint),
Expand Down Expand Up @@ -467,7 +466,6 @@ func (e *Executor) GetTask(call *Call) (*ast.Task, error) {
DidYouMean: didYouMean,
}
}

return matchingTask, nil
}

Expand Down
17 changes: 17 additions & 0 deletions task_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -437,6 +437,7 @@ func TestStatusChecksum(t *testing.T) { // nolint:paralleltest // cannot run in
task string
}{
{[]string{"generated.txt", ".task/checksum/build"}, "build"},
{[]string{"generated-wildcard.txt", ".task/checksum/build-wildcard"}, "build-wildcard"},
{[]string{"generated.txt", ".task/checksum/build-with-status"}, "build-with-status"},
}

Expand Down Expand Up @@ -1810,6 +1811,22 @@ func TestRunOnlyRunsJobsHashOnce(t *testing.T) {
})
}

func TestRunOnlyRunsJobsHashOnceWithWildcard(t *testing.T) {
t.Parallel()

tt := fileContentTest{
Dir: "testdata/run",
Target: "deploy",
Files: map[string]string{
"wildcard.txt": "Deploy infra\nDeploy js\nDeploy go\n",
},
}
t.Run("", func(t *testing.T) {
t.Parallel()
tt.Run(t)
})
}

func TestRunOnceSharedDeps(t *testing.T) {
t.Parallel()

Expand Down
8 changes: 7 additions & 1 deletion taskfile/ast/task.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,17 +46,22 @@ type Task struct {
Namespace string
IncludeVars *Vars
IncludedTaskfileVars *Vars

FullName string
}

func (t *Task) Name() string {
if t.Label != "" {
return t.Label
}
if t.FullName != "" {
return t.FullName
}
return t.Task
}

func (t *Task) LocalName() string {
name := t.Task
name := t.FullName
name = strings.TrimPrefix(name, t.Namespace)
name = strings.TrimPrefix(name, ":")
return name
Expand Down Expand Up @@ -220,6 +225,7 @@ func (t *Task) DeepCopy() *Task {
Location: t.Location.DeepCopy(),
Requires: t.Requires.DeepCopy(),
Namespace: t.Namespace,
FullName: t.FullName,
}
return c
}
8 changes: 8 additions & 0 deletions testdata/checksum/Taskfile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,14 @@ tasks:
generates:
- ./generated.txt
method: checksum
build-*:
cmds:
- cp ./source.txt ./generated-{{index .MATCH 0}}.txt
sources:
- ./source.txt
generates:
- ./generated-{{index .MATCH 0}}.txt
method: checksum

build-with-status:
cmds:
Expand Down
1 change: 1 addition & 0 deletions testdata/checksum/generated-wildcard.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Hello, World!
11 changes: 11 additions & 0 deletions testdata/run/Taskfile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,14 @@ tasks:
run: once
cmds:
- echo starting {{.CONTENT}} >> hash.txt

deploy:
cmds:
- rm -rf wildcard.txt
- task: deploy:infra
- task: deploy:js
- task: deploy:go

deploy:*:
run: once
cmd: echo "Deploy {{index .MATCH 0}}" >> wildcard.txt
8 changes: 7 additions & 1 deletion variables.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,14 @@ func (e *Executor) compiledTask(call *Call, evaluateShVars bool) (*ast.Task, err
if err != nil {
return nil, err
}
fullName := origTask.Task
if matches, exists := vars.Get("MATCH"); exists {
for _, match := range matches.Value.([]string) {
fullName = strings.Replace(fullName, "*", match, 1)
}
}

cache := &templater.Cache{Vars: vars}

new := ast.Task{
Task: origTask.Task,
Label: templater.Replace(origTask.Label, cache),
Expand Down Expand Up @@ -76,6 +81,7 @@ func (e *Executor) compiledTask(call *Call, evaluateShVars bool) (*ast.Task, err
Requires: origTask.Requires,
Watch: origTask.Watch,
Namespace: origTask.Namespace,
FullName: fullName,
}
new.Dir, err = execext.ExpandLiteral(new.Dir)
if err != nil {
Expand Down
Loading