diff --git a/task_test.go b/task_test.go index 93c74ede..3a5b64e9 100644 --- a/task_test.go +++ b/task_test.go @@ -969,10 +969,13 @@ func TestStatusVariables(t *testing.T) { Verbose: true, } require.NoError(t, e.Setup()) - require.NoError(t, e.Run(context.Background(), &ast.Call{Task: "build"})) + require.NoError(t, e.Run(context.Background(), &ast.Call{Task: "build-checksum"})) assert.Contains(t, buff.String(), "3e464c4b03f4b65d740e1e130d4d108a") + buff.Reset() + require.NoError(t, e.Run(context.Background(), &ast.Call{Task: "build-ts"})) + inf, err := os.Stat(filepathext.SmartJoin(dir, "source.txt")) require.NoError(t, err) ts := fmt.Sprintf("%d", inf.ModTime().Unix()) @@ -1002,10 +1005,12 @@ func TestCmdsVariables(t *testing.T) { Verbose: true, } require.NoError(t, e.Setup()) - require.NoError(t, e.Run(context.Background(), &ast.Call{Task: "build"})) + require.NoError(t, e.Run(context.Background(), &ast.Call{Task: "build-checksum"})) assert.Contains(t, buff.String(), "3e464c4b03f4b65d740e1e130d4d108a") + buff.Reset() + require.NoError(t, e.Run(context.Background(), &ast.Call{Task: "build-ts"})) inf, err := os.Stat(filepathext.SmartJoin(dir, "source.txt")) require.NoError(t, err) ts := fmt.Sprintf("%d", inf.ModTime().Unix()) diff --git a/testdata/cmds_vars/Taskfile.yml b/testdata/cmds_vars/Taskfile.yml index 4857129f..24769c3f 100644 --- a/testdata/cmds_vars/Taskfile.yml +++ b/testdata/cmds_vars/Taskfile.yml @@ -1,10 +1,16 @@ version: '3' tasks: - build: + build-checksum: sources: - ./source.txt cmds: - echo "{{.CHECKSUM}}" - - echo "{{.TIMESTAMP.Unix}}" - - echo "{{.TIMESTAMP}}" + + build-ts: + method: timestamp + sources: + - ./source.txt + cmds: + - echo '{{.TIMESTAMP.Unix}}' + - echo '{{.TIMESTAMP}}' diff --git a/testdata/status_vars/Taskfile.yml b/testdata/status_vars/Taskfile.yml index 78d166c0..1e101eb8 100644 --- a/testdata/status_vars/Taskfile.yml +++ b/testdata/status_vars/Taskfile.yml @@ -1,10 +1,16 @@ version: '3' tasks: - build: + build-checksum: sources: - ./source.txt status: - echo "{{.CHECKSUM}}" + + build-ts: + method: timestamp + sources: + - ./source.txt + status: - echo '{{.TIMESTAMP.Unix}}' - echo '{{.TIMESTAMP}}' diff --git a/variables.go b/variables.go index e92ad349..e515aea6 100644 --- a/variables.go +++ b/variables.go @@ -128,18 +128,21 @@ func (e *Executor) compiledTask(call *ast.Call, evaluateShVars bool) (*ast.Task, } } - if len(origTask.Sources) > 0 { - timestampChecker := fingerprint.NewTimestampChecker(e.TempDir.Fingerprint, e.Dry) - checksumChecker := fingerprint.NewChecksumChecker(e.TempDir.Fingerprint, e.Dry) + if len(origTask.Sources) > 0 && origTask.Method != "none" { + var checker fingerprint.SourcesCheckable - for _, checker := range []fingerprint.SourcesCheckable{timestampChecker, checksumChecker} { - value, err := checker.Value(&new) - if err != nil { - return nil, err - } - vars.Set(strings.ToUpper(checker.Kind()), ast.Var{Live: value}) + if origTask.Method == "timestamp" { + checker = fingerprint.NewTimestampChecker(e.TempDir.Fingerprint, e.Dry) + } else { + checker = fingerprint.NewChecksumChecker(e.TempDir.Fingerprint, e.Dry) } + value, err := checker.Value(&new) + if err != nil { + return nil, err + } + vars.Set(strings.ToUpper(checker.Kind()), ast.Var{Live: value}) + // Adding new variables, requires us to refresh the templaters // cache of the the values manually cache.ResetCache()