1
0
mirror of https://github.com/go-task/task.git synced 2025-01-10 04:18:53 +02:00

feat: add TASK_DIR special variable (#1961)

Co-authored-by: Pete Davison <pd93.uk@outlook.com>
This commit is contained in:
Valentin Maerten 2024-12-30 11:45:25 +01:00 committed by GitHub
parent 1bda388925
commit 9d8c4ba7e6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 11 additions and 3 deletions

View File

@ -4,7 +4,6 @@ import (
"bytes"
"context"
"fmt"
"maps"
"os"
"path/filepath"
"strings"
@ -192,10 +191,14 @@ func (c *Compiler) getSpecialVars(t *ast.Task, call *ast.Call) (map[string]strin
"TASK_VERSION": version.GetVersion(),
}
if t != nil {
maps.Copy(allVars, map[string]string{"TASK": t.Task, "TASKFILE": t.Location.Taskfile, "TASKFILE_DIR": filepath.Dir(t.Location.Taskfile)})
allVars["TASK"] = t.Task
allVars["TASK_DIR"] = filepathext.SmartJoin(c.Dir, t.Dir)
allVars["TASKFILE"] = t.Location.Taskfile
allVars["TASKFILE_DIR"] = filepath.Dir(t.Location.Taskfile)
}
if call != nil {
maps.Copy(allVars, map[string]string{"ALIAS": call.Task})
allVars["ALIAS"] = call.Task
}
return allVars, nil
}

View File

@ -226,6 +226,7 @@ func TestSpecialVars(t *testing.T) {
{target: "print-taskfile", expected: toAbs(dir) + "/Taskfile.yml"},
{target: "print-taskfile-dir", expected: toAbs(dir)},
{target: "print-task-version", expected: "unknown"},
{target: "print-task-dir", expected: toAbs(dir) + "/foo"},
// Included
{target: "included:print-task", expected: "included:print-task"},
{target: "included:print-root-dir", expected: toAbs(dir)},

View File

@ -19,3 +19,6 @@ tasks:
cmds:
- echo "{{.ALIAS}}"
print-task-alias-default: echo "{{.ALIAS}}"
print-task-dir:
dir: 'foo'
cmd: echo {{.TASK_DIR}}

View File

@ -114,6 +114,7 @@ special variable will be overridden.
| `ROOT_DIR` | The absolute path of the root Taskfile directory. |
| `TASKFILE` | The absolute path of the included Taskfile. |
| `TASKFILE_DIR` | The absolute path of the included Taskfile directory. |
| `TASK_DIR` | The absolute path of the directory where the task is executed. |
| `USER_WORKING_DIR` | The absolute path of the directory `task` was called from. |
| `CHECKSUM` | The checksum of the files listed in `sources`. Only available within the `status` prop and if method is set to `checksum`. |
| `TIMESTAMP` | The date object of the greatest timestamp of the files listed in `sources`. Only available within the `status` prop and if method is set to `timestamp`. |