mirror of
https://github.com/go-task/task.git
synced 2026-06-24 21:26:04 +00:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
57c094f415 | ||
|
|
2f4876b71c | ||
|
|
725f929778 | ||
|
|
8266b28b48 | ||
|
|
f5c7472f64 | ||
|
|
ced3e7a579 | ||
|
|
36dd71b122 |
@@ -1,5 +1,11 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## v3.37.2 - 2024-05-12
|
||||||
|
|
||||||
|
- Fixed a bug where an empty Taskfile would cause a panic (#1648 by @pd93).
|
||||||
|
- Fixed a bug where includes Taskfile variable were not being merged correctly
|
||||||
|
(#1643, #1649 by @pd93).
|
||||||
|
|
||||||
## v3.37.1 - 2024-05-09
|
## v3.37.1 - 2024-05-09
|
||||||
|
|
||||||
- Fix bug where non-string values (numbers, bools) added to `env:` weren't been
|
- Fix bug where non-string values (numbers, bools) added to `env:` weren't been
|
||||||
|
|||||||
2
package-lock.json
generated
2
package-lock.json
generated
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@go-task/cli",
|
"name": "@go-task/cli",
|
||||||
"version": "3.37.1",
|
"version": "3.37.2",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@go-task/cli",
|
"name": "@go-task/cli",
|
||||||
"version": "3.37.1",
|
"version": "3.37.2",
|
||||||
"description": "A task runner / simpler Make alternative written in Go",
|
"description": "A task runner / simpler Make alternative written in Go",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"postinstall": "go-npm install",
|
"postinstall": "go-npm install",
|
||||||
|
|||||||
37
task_test.go
37
task_test.go
@@ -95,6 +95,15 @@ func TestEmptyTask(t *testing.T) {
|
|||||||
require.NoError(t, e.Run(context.Background(), &ast.Call{Task: "default"}))
|
require.NoError(t, e.Run(context.Background(), &ast.Call{Task: "default"}))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestEmptyTaskfile(t *testing.T) {
|
||||||
|
e := &task.Executor{
|
||||||
|
Dir: "testdata/empty_taskfile",
|
||||||
|
Stdout: io.Discard,
|
||||||
|
Stderr: io.Discard,
|
||||||
|
}
|
||||||
|
require.Error(t, e.Setup(), "e.Setup()")
|
||||||
|
}
|
||||||
|
|
||||||
func TestEnv(t *testing.T) {
|
func TestEnv(t *testing.T) {
|
||||||
tt := fileContentTest{
|
tt := fileContentTest{
|
||||||
Dir: "testdata/env",
|
Dir: "testdata/env",
|
||||||
@@ -1228,6 +1237,34 @@ func TestIncludesInterpolation(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestIncludedTaskfileVarMerging(t *testing.T) {
|
||||||
|
const dir = "testdata/included_taskfile_var_merging"
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
task string
|
||||||
|
expectedOutput string
|
||||||
|
}{
|
||||||
|
{"foo", "foo:pwd", "included_taskfile_var_merging/foo\n"},
|
||||||
|
{"bar", "bar:pwd", "included_taskfile_var_merging/bar\n"},
|
||||||
|
}
|
||||||
|
for _, test := range tests {
|
||||||
|
t.Run(test.name, func(t *testing.T) {
|
||||||
|
var buff bytes.Buffer
|
||||||
|
e := task.Executor{
|
||||||
|
Dir: dir,
|
||||||
|
Stdout: &buff,
|
||||||
|
Stderr: &buff,
|
||||||
|
Silent: true,
|
||||||
|
}
|
||||||
|
require.NoError(t, e.Setup())
|
||||||
|
|
||||||
|
err := e.Run(context.Background(), &ast.Call{Task: test.task})
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Contains(t, buff.String(), test.expectedOutput)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestInternalTask(t *testing.T) {
|
func TestInternalTask(t *testing.T) {
|
||||||
const dir = "testdata/internal_task"
|
const dir = "testdata/internal_task"
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ func (t1 *Tasks) Merge(t2 Tasks, include *Include, includedTaskfileVars *Vars) {
|
|||||||
task.IncludeVars = &Vars{}
|
task.IncludeVars = &Vars{}
|
||||||
}
|
}
|
||||||
task.IncludeVars.Merge(include.Vars, nil)
|
task.IncludeVars.Merge(include.Vars, nil)
|
||||||
task.IncludedTaskfileVars = includedTaskfileVars
|
task.IncludedTaskfileVars = includedTaskfileVars.DeepCopy()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add the task to the merged taskfile
|
// Add the task to the merged taskfile
|
||||||
|
|||||||
@@ -263,23 +263,28 @@ func (r *Reader) readNode(node Node) (*ast.Taskfile, error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var t ast.Taskfile
|
var tf ast.Taskfile
|
||||||
if err := yaml.Unmarshal(b, &t); err != nil {
|
if err := yaml.Unmarshal(b, &tf); err != nil {
|
||||||
return nil, &errors.TaskfileInvalidError{URI: filepathext.TryAbsToRel(node.Location()), Err: err}
|
return nil, &errors.TaskfileInvalidError{URI: filepathext.TryAbsToRel(node.Location()), Err: err}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check that the Taskfile is set and has a schema version
|
||||||
|
if tf.Version == nil {
|
||||||
|
return nil, &errors.TaskfileVersionCheckError{URI: node.Location()}
|
||||||
|
}
|
||||||
|
|
||||||
// Set the taskfile/task's locations
|
// Set the taskfile/task's locations
|
||||||
t.Location = node.Location()
|
tf.Location = node.Location()
|
||||||
for _, task := range t.Tasks.Values() {
|
for _, task := range tf.Tasks.Values() {
|
||||||
// If the task is not defined, create a new one
|
// If the task is not defined, create a new one
|
||||||
if task == nil {
|
if task == nil {
|
||||||
task = &ast.Task{}
|
task = &ast.Task{}
|
||||||
}
|
}
|
||||||
// Set the location of the taskfile for each task
|
// Set the location of the taskfile for each task
|
||||||
if task.Location.Taskfile == "" {
|
if task.Location.Taskfile == "" {
|
||||||
task.Location.Taskfile = t.Location
|
task.Location.Taskfile = tf.Location
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return &t, nil
|
return &tf, nil
|
||||||
}
|
}
|
||||||
|
|||||||
0
testdata/empty_taskfile/Taskfile.yml
vendored
Normal file
0
testdata/empty_taskfile/Taskfile.yml
vendored
Normal file
12
testdata/included_taskfile_var_merging/Taskfile.yaml
vendored
Normal file
12
testdata/included_taskfile_var_merging/Taskfile.yaml
vendored
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
version: "3"
|
||||||
|
|
||||||
|
includes:
|
||||||
|
foo:
|
||||||
|
taskfile: ./foo/Taskfile.yaml
|
||||||
|
bar:
|
||||||
|
taskfile: ./bar/Taskfile.yaml
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
stub:
|
||||||
|
cmds:
|
||||||
|
- echo 0
|
||||||
11
testdata/included_taskfile_var_merging/bar/Taskfile.yaml
vendored
Normal file
11
testdata/included_taskfile_var_merging/bar/Taskfile.yaml
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
version: "3"
|
||||||
|
|
||||||
|
vars:
|
||||||
|
DIR: bar
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
pwd:
|
||||||
|
dir: ./{{ .DIR }}
|
||||||
|
cmds:
|
||||||
|
- echo "{{ .DIR }}"
|
||||||
|
- pwd
|
||||||
11
testdata/included_taskfile_var_merging/foo/Taskfile.yaml
vendored
Normal file
11
testdata/included_taskfile_var_merging/foo/Taskfile.yaml
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
version: "3"
|
||||||
|
|
||||||
|
vars:
|
||||||
|
DIR: foo
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
pwd:
|
||||||
|
dir: ./{{ .DIR }}
|
||||||
|
cmds:
|
||||||
|
- echo "{{ .DIR }}"
|
||||||
|
- pwd
|
||||||
@@ -5,6 +5,12 @@ sidebar_position: 14
|
|||||||
|
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## v3.37.2 - 2024-05-12
|
||||||
|
|
||||||
|
- Fixed a bug where an empty Taskfile would cause a panic (#1648 by @pd93).
|
||||||
|
- Fixed a bug where includes Taskfile variable were not being merged correctly
|
||||||
|
(#1643, #1649 by @pd93).
|
||||||
|
|
||||||
## v3.37.1 - 2024-05-09
|
## v3.37.1 - 2024-05-09
|
||||||
|
|
||||||
- Fix bug where non-string values (numbers, bools) added to `env:` weren't been
|
- Fix bug where non-string values (numbers, bools) added to `env:` weren't been
|
||||||
|
|||||||
@@ -148,6 +148,8 @@ If you have questions, feel free to ask them in the `#help` forum channel on our
|
|||||||
---
|
---
|
||||||
|
|
||||||
{/* prettier-ignore-start */}
|
{/* prettier-ignore-start */}
|
||||||
|
[experiments]: /experiments
|
||||||
|
[experiments-workflow]: /experiments#workflow
|
||||||
[task]: https://github.com/go-task/task
|
[task]: https://github.com/go-task/task
|
||||||
[vscode-task]: https://github.com/go-task/vscode-task
|
[vscode-task]: https://github.com/go-task/vscode-task
|
||||||
[go]: https://go.dev
|
[go]: https://go.dev
|
||||||
|
|||||||
@@ -285,9 +285,9 @@
|
|||||||
"yaml": {
|
"yaml": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"description": "The value will parsed as a YAML string and stored in the variable"
|
"description": "The value will parsed as a YAML string and stored in the variable"
|
||||||
},
|
}
|
||||||
"additionalProperties": false
|
},
|
||||||
}
|
"additionalProperties": false
|
||||||
},
|
},
|
||||||
"task_call": {
|
"task_call": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
|
|||||||
@@ -5,6 +5,12 @@ sidebar_position: 14
|
|||||||
|
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## v3.37.2 - 2024-05-12
|
||||||
|
|
||||||
|
- Fixed a bug where an empty Taskfile would cause a panic (#1648 by @pd93).
|
||||||
|
- Fixed a bug where includes Taskfile variable were not being merged correctly
|
||||||
|
(#1643, #1649 by @pd93).
|
||||||
|
|
||||||
## v3.37.1 - 2024-05-09
|
## v3.37.1 - 2024-05-09
|
||||||
|
|
||||||
- Fix bug where non-string values (numbers, bools) added to `env:` weren't been
|
- Fix bug where non-string values (numbers, bools) added to `env:` weren't been
|
||||||
|
|||||||
@@ -148,6 +148,8 @@ If you have questions, feel free to ask them in the `#help` forum channel on our
|
|||||||
---
|
---
|
||||||
|
|
||||||
{/* prettier-ignore-start */}
|
{/* prettier-ignore-start */}
|
||||||
|
[experiments]: /experiments
|
||||||
|
[experiments-workflow]: /experiments#workflow
|
||||||
[task]: https://github.com/go-task/task
|
[task]: https://github.com/go-task/task
|
||||||
[vscode-task]: https://github.com/go-task/vscode-task
|
[vscode-task]: https://github.com/go-task/vscode-task
|
||||||
[go]: https://go.dev
|
[go]: https://go.dev
|
||||||
|
|||||||
Reference in New Issue
Block a user