mirror of
https://github.com/go-task/task.git
synced 2025-02-13 13:59:32 +02:00
remove v1
This commit is contained in:
parent
c47c15ee47
commit
0f385f9f4e
@ -28,12 +28,14 @@ Example: 'task hello' with the following 'Taskfile.yml' file will generate an
|
|||||||
'output.txt' file with the content "hello".
|
'output.txt' file with the content "hello".
|
||||||
|
|
||||||
'''
|
'''
|
||||||
hello:
|
version: '2'
|
||||||
cmds:
|
tasks:
|
||||||
- echo "I am going to write a file named 'output.txt' now."
|
hello:
|
||||||
- echo "hello" > output.txt
|
cmds:
|
||||||
generates:
|
- echo "I am going to write a file named 'output.txt' now."
|
||||||
- output.txt
|
- echo "hello" > output.txt
|
||||||
|
generates:
|
||||||
|
- output.txt
|
||||||
'''
|
'''
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
|
@ -15,21 +15,7 @@ available, but not `3.0.0+`.
|
|||||||
|
|
||||||
## Version 1
|
## Version 1
|
||||||
|
|
||||||
In the first version of the `Taskfile`, the `version:` key was not available,
|
Is deprecated and can not be used anymore.
|
||||||
because the tasks was in the root of the YAML document. Like this:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
echo:
|
|
||||||
cmds:
|
|
||||||
- echo "Hello, World!"
|
|
||||||
```
|
|
||||||
|
|
||||||
The variable priority order was also different:
|
|
||||||
|
|
||||||
1. Call variables
|
|
||||||
2. Environment
|
|
||||||
3. Task variables
|
|
||||||
4. `Taskvars.yml` variables
|
|
||||||
|
|
||||||
## Version 2.0
|
## Version 2.0
|
||||||
|
|
||||||
|
@ -1,137 +0,0 @@
|
|||||||
package v1
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"context"
|
|
||||||
"fmt"
|
|
||||||
"strings"
|
|
||||||
"sync"
|
|
||||||
|
|
||||||
"github.com/go-task/task/v2/internal/compiler"
|
|
||||||
"github.com/go-task/task/v2/internal/execext"
|
|
||||||
"github.com/go-task/task/v2/internal/logger"
|
|
||||||
"github.com/go-task/task/v2/internal/taskfile"
|
|
||||||
"github.com/go-task/task/v2/internal/templater"
|
|
||||||
)
|
|
||||||
|
|
||||||
var _ compiler.Compiler = &CompilerV1{}
|
|
||||||
|
|
||||||
type CompilerV1 struct {
|
|
||||||
Dir string
|
|
||||||
Vars taskfile.Vars
|
|
||||||
|
|
||||||
Logger *logger.Logger
|
|
||||||
|
|
||||||
dynamicCache map[string]string
|
|
||||||
muDynamicCache sync.Mutex
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetVariables returns fully resolved variables following the priority order:
|
|
||||||
// 1. Call variables (should already have been resolved)
|
|
||||||
// 2. Environment (should not need to be resolved)
|
|
||||||
// 3. Task variables, resolved with access to:
|
|
||||||
// - call, taskvars and environment variables
|
|
||||||
// 4. Taskvars variables, resolved with access to:
|
|
||||||
// - environment variables
|
|
||||||
func (c *CompilerV1) GetVariables(t *taskfile.Task, call taskfile.Call) (taskfile.Vars, error) {
|
|
||||||
merge := func(dest taskfile.Vars, srcs ...taskfile.Vars) {
|
|
||||||
for _, src := range srcs {
|
|
||||||
for k, v := range src {
|
|
||||||
dest[k] = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
varsKeys := func(srcs ...taskfile.Vars) []string {
|
|
||||||
m := make(map[string]struct{})
|
|
||||||
for _, src := range srcs {
|
|
||||||
for k := range src {
|
|
||||||
m[k] = struct{}{}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
lst := make([]string, 0, len(m))
|
|
||||||
for k := range m {
|
|
||||||
lst = append(lst, k)
|
|
||||||
}
|
|
||||||
return lst
|
|
||||||
}
|
|
||||||
replaceVars := func(dest taskfile.Vars, keys []string) error {
|
|
||||||
r := templater.Templater{Vars: dest}
|
|
||||||
for _, k := range keys {
|
|
||||||
v := dest[k]
|
|
||||||
dest[k] = taskfile.Var{
|
|
||||||
Static: r.Replace(v.Static),
|
|
||||||
Sh: r.Replace(v.Sh),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return r.Err()
|
|
||||||
}
|
|
||||||
resolveShell := func(dest taskfile.Vars, keys []string) error {
|
|
||||||
for _, k := range keys {
|
|
||||||
v := dest[k]
|
|
||||||
static, err := c.HandleDynamicVar(v)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
dest[k] = taskfile.Var{Static: static}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
update := func(dest taskfile.Vars, srcs ...taskfile.Vars) error {
|
|
||||||
merge(dest, srcs...)
|
|
||||||
// updatedKeys ensures template evaluation is run only once.
|
|
||||||
updatedKeys := varsKeys(srcs...)
|
|
||||||
if err := replaceVars(dest, updatedKeys); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return resolveShell(dest, updatedKeys)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Resolve taskvars variables to "result" with environment override variables.
|
|
||||||
override := compiler.GetEnviron()
|
|
||||||
result := make(taskfile.Vars, len(c.Vars)+len(t.Vars)+len(override))
|
|
||||||
if err := update(result, c.Vars, override); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
// Resolve task variables to "result" with environment and call override variables.
|
|
||||||
merge(override, call.Vars)
|
|
||||||
if err := update(result, t.Vars, override); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return result, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *CompilerV1) HandleDynamicVar(v taskfile.Var) (string, error) {
|
|
||||||
if v.Static != "" || v.Sh == "" {
|
|
||||||
return v.Static, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
c.muDynamicCache.Lock()
|
|
||||||
defer c.muDynamicCache.Unlock()
|
|
||||||
|
|
||||||
if c.dynamicCache == nil {
|
|
||||||
c.dynamicCache = make(map[string]string, 30)
|
|
||||||
}
|
|
||||||
if result, ok := c.dynamicCache[v.Sh]; ok {
|
|
||||||
return result, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
var stdout bytes.Buffer
|
|
||||||
opts := &execext.RunCommandOptions{
|
|
||||||
Command: v.Sh,
|
|
||||||
Dir: c.Dir,
|
|
||||||
Stdout: &stdout,
|
|
||||||
Stderr: c.Logger.Stderr,
|
|
||||||
}
|
|
||||||
if err := execext.RunCommand(context.Background(), opts); err != nil {
|
|
||||||
return "", fmt.Errorf(`task: Command "%s" in taskvars file failed: %s`, opts.Command, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Trim a single trailing newline from the result to make most command
|
|
||||||
// output easier to use in shell commands.
|
|
||||||
result := strings.TrimSuffix(stdout.String(), "\n")
|
|
||||||
|
|
||||||
c.dynamicCache[v.Sh] = result
|
|
||||||
c.Logger.VerboseErrf(logger.Magenta, `task: dynamic variable: '%s' result: '%s'`, v.Sh, result)
|
|
||||||
|
|
||||||
return result, nil
|
|
||||||
}
|
|
29
task.go
29
task.go
@ -11,7 +11,6 @@ import (
|
|||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
|
|
||||||
"github.com/go-task/task/v2/internal/compiler"
|
"github.com/go-task/task/v2/internal/compiler"
|
||||||
compilerv1 "github.com/go-task/task/v2/internal/compiler/v1"
|
|
||||||
compilerv2 "github.com/go-task/task/v2/internal/compiler/v2"
|
compilerv2 "github.com/go-task/task/v2/internal/compiler/v2"
|
||||||
"github.com/go-task/task/v2/internal/execext"
|
"github.com/go-task/task/v2/internal/execext"
|
||||||
"github.com/go-task/task/v2/internal/logger"
|
"github.com/go-task/task/v2/internal/logger"
|
||||||
@ -122,14 +121,16 @@ func (e *Executor) Setup() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf(`task: Could not parse taskfile version "%s": %v`, e.Taskfile.Version, err)
|
return fmt.Errorf(`task: Could not parse taskfile version "%s": %v`, e.Taskfile.Version, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if v < 2 {
|
||||||
|
return fmt.Errorf(`task: Taskfile version prior to v2 are not supported anymore`)
|
||||||
|
}
|
||||||
|
|
||||||
// consider as equal to the greater version if round
|
// consider as equal to the greater version if round
|
||||||
if v == 2.0 {
|
if v == 2.0 {
|
||||||
v = 2.6
|
v = 2.6
|
||||||
}
|
}
|
||||||
|
|
||||||
if v < 1 {
|
|
||||||
return fmt.Errorf(`task: Taskfile version should be greater or equal to v1`)
|
|
||||||
}
|
|
||||||
if v > 3.0 {
|
if v > 3.0 {
|
||||||
return fmt.Errorf(`task: Taskfile versions greater than v3.0 not implemented in the version of Task`)
|
return fmt.Errorf(`task: Taskfile versions greater than v3.0 not implemented in the version of Task`)
|
||||||
}
|
}
|
||||||
@ -139,20 +140,12 @@ func (e *Executor) Setup() error {
|
|||||||
e.Logger.Color = false
|
e.Logger.Color = false
|
||||||
}
|
}
|
||||||
|
|
||||||
if v < 2 {
|
e.Compiler = &compilerv2.CompilerV2{
|
||||||
e.Compiler = &compilerv1.CompilerV1{
|
Dir: e.Dir,
|
||||||
Dir: e.Dir,
|
Taskvars: e.taskvars,
|
||||||
Vars: e.taskvars,
|
TaskfileVars: e.Taskfile.Vars,
|
||||||
Logger: e.Logger,
|
Expansions: e.Taskfile.Expansions,
|
||||||
}
|
Logger: e.Logger,
|
||||||
} else { // v >= 2
|
|
||||||
e.Compiler = &compilerv2.CompilerV2{
|
|
||||||
Dir: e.Dir,
|
|
||||||
Taskvars: e.taskvars,
|
|
||||||
TaskfileVars: e.Taskfile.Vars,
|
|
||||||
Expansions: e.Taskfile.Expansions,
|
|
||||||
Logger: e.Logger,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if v < 2.1 && e.Taskfile.Output != "" {
|
if v < 2.1 && e.Taskfile.Output != "" {
|
||||||
|
51
task_test.go
51
task_test.go
@ -69,43 +69,6 @@ func TestEnv(t *testing.T) {
|
|||||||
tt.Run(t)
|
tt.Run(t)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestVarsV1(t *testing.T) {
|
|
||||||
tt := fileContentTest{
|
|
||||||
Dir: "testdata/vars/v1",
|
|
||||||
Target: "default",
|
|
||||||
TrimSpace: true,
|
|
||||||
Files: map[string]string{
|
|
||||||
// hello task:
|
|
||||||
"foo.txt": "foo",
|
|
||||||
"bar.txt": "bar",
|
|
||||||
"baz.txt": "baz",
|
|
||||||
"tmpl_foo.txt": "foo",
|
|
||||||
"tmpl_bar.txt": "<no value>",
|
|
||||||
"tmpl_foo2.txt": "foo2",
|
|
||||||
"tmpl_bar2.txt": "bar2",
|
|
||||||
"shtmpl_foo.txt": "foo",
|
|
||||||
"shtmpl_foo2.txt": "foo2",
|
|
||||||
"nestedtmpl_foo.txt": "{{.FOO}}",
|
|
||||||
"nestedtmpl_foo2.txt": "foo2",
|
|
||||||
"foo2.txt": "foo2",
|
|
||||||
"bar2.txt": "bar2",
|
|
||||||
"baz2.txt": "baz2",
|
|
||||||
"tmpl2_foo.txt": "<no value>",
|
|
||||||
"tmpl2_foo2.txt": "foo2",
|
|
||||||
"tmpl2_bar.txt": "<no value>",
|
|
||||||
"tmpl2_bar2.txt": "<no value>",
|
|
||||||
"shtmpl2_foo.txt": "<no value>",
|
|
||||||
"shtmpl2_foo2.txt": "foo2",
|
|
||||||
"nestedtmpl2_foo2.txt": "{{.FOO2}}",
|
|
||||||
"override.txt": "bar",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
tt.Run(t)
|
|
||||||
// Ensure identical results when running hello task directly.
|
|
||||||
tt.Target = "hello"
|
|
||||||
tt.Run(t)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestVarsV2(t *testing.T) {
|
func TestVarsV2(t *testing.T) {
|
||||||
tt := fileContentTest{
|
tt := fileContentTest{
|
||||||
Dir: "testdata/vars/v2",
|
Dir: "testdata/vars/v2",
|
||||||
@ -144,7 +107,7 @@ func TestVarsV2(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestMultilineVars(t *testing.T) {
|
func TestMultilineVars(t *testing.T) {
|
||||||
for _, dir := range []string{"testdata/vars/v1/multiline", "testdata/vars/v2/multiline"} {
|
for _, dir := range []string{"testdata/vars/v2/multiline"} {
|
||||||
tt := fileContentTest{
|
tt := fileContentTest{
|
||||||
Dir: dir,
|
Dir: dir,
|
||||||
Target: "default",
|
Target: "default",
|
||||||
@ -168,7 +131,7 @@ func TestMultilineVars(t *testing.T) {
|
|||||||
|
|
||||||
func TestVarsInvalidTmpl(t *testing.T) {
|
func TestVarsInvalidTmpl(t *testing.T) {
|
||||||
const (
|
const (
|
||||||
dir = "testdata/vars/v1"
|
dir = "testdata/vars/v2"
|
||||||
target = "invalid-var-tmpl"
|
target = "invalid-var-tmpl"
|
||||||
expectError = "template: :1: unexpected EOF"
|
expectError = "template: :1: unexpected EOF"
|
||||||
)
|
)
|
||||||
@ -441,7 +404,6 @@ func TestTaskVersion(t *testing.T) {
|
|||||||
Dir string
|
Dir string
|
||||||
Version string
|
Version string
|
||||||
}{
|
}{
|
||||||
{"testdata/version/v1", "1"},
|
|
||||||
{"testdata/version/v2", "2"},
|
{"testdata/version/v2", "2"},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -678,3 +640,12 @@ func TestWhenDirAttributeItCreatesMissingAndRunsInThatDir(t *testing.T) {
|
|||||||
// Clean-up after ourselves only if no error.
|
// Clean-up after ourselves only if no error.
|
||||||
_ = os.Remove(toBeCreated)
|
_ = os.Remove(toBeCreated)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestDisplaysErrorOnUnsupportedVersion(t *testing.T) {
|
||||||
|
e := task.Executor{
|
||||||
|
Dir: "testdata/version/v1",
|
||||||
|
Stdout: ioutil.Discard,
|
||||||
|
Stderr: ioutil.Discard,
|
||||||
|
}
|
||||||
|
assert.Error(t, e.Setup())
|
||||||
|
}
|
||||||
|
21
testdata/checksum/Taskfile.yml
vendored
21
testdata/checksum/Taskfile.yml
vendored
@ -1,9 +1,12 @@
|
|||||||
build:
|
version: '2'
|
||||||
cmds:
|
|
||||||
- cp ./source.txt ./generated.txt
|
tasks:
|
||||||
sources:
|
build:
|
||||||
- ./**/glob-with-inexistent-file.txt
|
cmds:
|
||||||
- ./source.txt
|
- cp ./source.txt ./generated.txt
|
||||||
generates:
|
sources:
|
||||||
- ./generated.txt
|
- ./**/glob-with-inexistent-file.txt
|
||||||
method: checksum
|
- ./source.txt
|
||||||
|
generates:
|
||||||
|
- ./generated.txt
|
||||||
|
method: checksum
|
||||||
|
15
testdata/cyclic/Taskfile.yml
vendored
15
testdata/cyclic/Taskfile.yml
vendored
@ -1,7 +1,10 @@
|
|||||||
task-1:
|
version: '2'
|
||||||
deps:
|
|
||||||
- task: task-2
|
|
||||||
|
|
||||||
task-2:
|
tasks:
|
||||||
deps:
|
task-1:
|
||||||
- task: task-1
|
deps:
|
||||||
|
- task: task-2
|
||||||
|
|
||||||
|
task-2:
|
||||||
|
deps:
|
||||||
|
- task: task-1
|
||||||
|
85
testdata/deps/Taskfile.yml
vendored
85
testdata/deps/Taskfile.yml
vendored
@ -1,53 +1,56 @@
|
|||||||
default:
|
version: '2'
|
||||||
deps: [d1, d2, d3]
|
|
||||||
|
|
||||||
d1:
|
tasks:
|
||||||
deps: [d11, d12, d13]
|
default:
|
||||||
cmds:
|
deps: [d1, d2, d3]
|
||||||
- echo 'Text' > d1.txt
|
|
||||||
|
|
||||||
d2:
|
d1:
|
||||||
deps: [d21, d22, d23]
|
deps: [d11, d12, d13]
|
||||||
cmds:
|
cmds:
|
||||||
- echo 'Text' > d2.txt
|
- echo 'Text' > d1.txt
|
||||||
|
|
||||||
d3:
|
d2:
|
||||||
deps: [d31, d32, d33]
|
deps: [d21, d22, d23]
|
||||||
cmds:
|
cmds:
|
||||||
- echo 'Text' > d3.txt
|
- echo 'Text' > d2.txt
|
||||||
|
|
||||||
d11:
|
d3:
|
||||||
cmds:
|
deps: [d31, d32, d33]
|
||||||
- echo 'Text' > d11.txt
|
cmds:
|
||||||
|
- echo 'Text' > d3.txt
|
||||||
|
|
||||||
d12:
|
d11:
|
||||||
cmds:
|
cmds:
|
||||||
- echo 'Text' > d12.txt
|
- echo 'Text' > d11.txt
|
||||||
|
|
||||||
d13:
|
d12:
|
||||||
cmds:
|
cmds:
|
||||||
- echo 'Text' > d13.txt
|
- echo 'Text' > d12.txt
|
||||||
|
|
||||||
d21:
|
d13:
|
||||||
cmds:
|
cmds:
|
||||||
- echo 'Text' > d21.txt
|
- echo 'Text' > d13.txt
|
||||||
|
|
||||||
d22:
|
d21:
|
||||||
cmds:
|
cmds:
|
||||||
- echo 'Text' > d22.txt
|
- echo 'Text' > d21.txt
|
||||||
|
|
||||||
d23:
|
d22:
|
||||||
cmds:
|
cmds:
|
||||||
- echo 'Text' > d23.txt
|
- echo 'Text' > d22.txt
|
||||||
|
|
||||||
d31:
|
d23:
|
||||||
cmds:
|
cmds:
|
||||||
- echo 'Text' > d31.txt
|
- echo 'Text' > d23.txt
|
||||||
|
|
||||||
d32:
|
d31:
|
||||||
cmds:
|
cmds:
|
||||||
- echo 'Text' > d32.txt
|
- echo 'Text' > d31.txt
|
||||||
|
|
||||||
d33:
|
d32:
|
||||||
cmds:
|
cmds:
|
||||||
- echo 'Text' > d33.txt
|
- echo 'Text' > d32.txt
|
||||||
|
|
||||||
|
d33:
|
||||||
|
cmds:
|
||||||
|
- echo 'Text' > d33.txt
|
||||||
|
79
testdata/generates/Taskfile.yml
vendored
79
testdata/generates/Taskfile.yml
vendored
@ -1,41 +1,44 @@
|
|||||||
abs.txt:
|
version: '2'
|
||||||
desc: generates dest file based on absolute paths
|
|
||||||
deps:
|
|
||||||
- sub/src.txt
|
|
||||||
dir: sub
|
|
||||||
cmds:
|
|
||||||
- cat src.txt > '{{.BUILD_DIR}}/abs.txt'
|
|
||||||
sources:
|
|
||||||
- src.txt
|
|
||||||
generates:
|
|
||||||
- "{{.BUILD_DIR}}/abs.txt"
|
|
||||||
|
|
||||||
rel.txt:
|
tasks:
|
||||||
desc: generates dest file based on relative paths
|
abs.txt:
|
||||||
deps:
|
desc: generates dest file based on absolute paths
|
||||||
- sub/src.txt
|
deps:
|
||||||
dir: sub
|
- sub/src.txt
|
||||||
cmds:
|
dir: sub
|
||||||
- cat src.txt > '../rel.txt'
|
cmds:
|
||||||
sources:
|
- cat src.txt > '{{.BUILD_DIR}}/abs.txt'
|
||||||
- src.txt
|
sources:
|
||||||
generates:
|
- src.txt
|
||||||
- "../rel.txt"
|
generates:
|
||||||
|
- "{{.BUILD_DIR}}/abs.txt"
|
||||||
|
|
||||||
sub/src.txt:
|
rel.txt:
|
||||||
desc: generate source file
|
desc: generates dest file based on relative paths
|
||||||
cmds:
|
deps:
|
||||||
- mkdir -p sub
|
- sub/src.txt
|
||||||
- echo "hello world" > sub/src.txt
|
dir: sub
|
||||||
status:
|
cmds:
|
||||||
- test -f sub/src.txt
|
- cat src.txt > '../rel.txt'
|
||||||
|
sources:
|
||||||
|
- src.txt
|
||||||
|
generates:
|
||||||
|
- "../rel.txt"
|
||||||
|
|
||||||
'my text file.txt':
|
sub/src.txt:
|
||||||
desc: generate file with spaces in the name
|
desc: generate source file
|
||||||
deps: [sub/src.txt]
|
cmds:
|
||||||
cmds:
|
- mkdir -p sub
|
||||||
- cat sub/src.txt > 'my text file.txt'
|
- echo "hello world" > sub/src.txt
|
||||||
sources:
|
status:
|
||||||
- sub/src.txt
|
- test -f sub/src.txt
|
||||||
generates:
|
|
||||||
- 'my text file.txt'
|
'my text file.txt':
|
||||||
|
desc: generate file with spaces in the name
|
||||||
|
deps: [sub/src.txt]
|
||||||
|
cmds:
|
||||||
|
- cat sub/src.txt > 'my text file.txt'
|
||||||
|
sources:
|
||||||
|
- sub/src.txt
|
||||||
|
generates:
|
||||||
|
- 'my text file.txt'
|
||||||
|
73
testdata/params/Taskfile.yml
vendored
73
testdata/params/Taskfile.yml
vendored
@ -1,37 +1,40 @@
|
|||||||
default:
|
version: '2'
|
||||||
vars:
|
|
||||||
SPANISH: ¡Holla mundo!
|
|
||||||
PORTUGUESE: "{{.PORTUGUESE_HELLO_WORLD}}"
|
|
||||||
GERMAN: "Welt!"
|
|
||||||
deps:
|
|
||||||
- task: write-file
|
|
||||||
vars: {CONTENT: Dependence1, FILE: dep1.txt}
|
|
||||||
- task: write-file
|
|
||||||
vars: {CONTENT: Dependence2, FILE: dep2.txt}
|
|
||||||
- task: write-file
|
|
||||||
vars: {CONTENT: "{{.SPANISH|replace \"mundo\" \"dependencia\"}}", FILE: spanish-dep.txt}
|
|
||||||
cmds:
|
|
||||||
- task: write-file
|
|
||||||
vars: {CONTENT: Hello, FILE: hello.txt}
|
|
||||||
- task: write-file
|
|
||||||
vars: {CONTENT: "$echo 'World'", FILE: world.txt}
|
|
||||||
- task: write-file
|
|
||||||
vars: {CONTENT: "!", FILE: exclamation.txt}
|
|
||||||
- task: write-file
|
|
||||||
vars: {CONTENT: "{{.SPANISH}}", FILE: spanish.txt}
|
|
||||||
- task: write-file
|
|
||||||
vars: {CONTENT: "{{.PORTUGUESE}}", FILE: portuguese.txt}
|
|
||||||
- task: write-file
|
|
||||||
vars: {CONTENT: "{{.GERMAN}}", FILE: german.txt}
|
|
||||||
- task: non-default
|
|
||||||
|
|
||||||
write-file:
|
tasks:
|
||||||
cmds:
|
default:
|
||||||
- echo {{.CONTENT}} > {{.FILE}}
|
vars:
|
||||||
|
SPANISH: ¡Holla mundo!
|
||||||
|
PORTUGUESE: "{{.PORTUGUESE_HELLO_WORLD}}"
|
||||||
|
GERMAN: "Welt!"
|
||||||
|
deps:
|
||||||
|
- task: write-file
|
||||||
|
vars: {CONTENT: Dependence1, FILE: dep1.txt}
|
||||||
|
- task: write-file
|
||||||
|
vars: {CONTENT: Dependence2, FILE: dep2.txt}
|
||||||
|
- task: write-file
|
||||||
|
vars: {CONTENT: "{{.SPANISH|replace \"mundo\" \"dependencia\"}}", FILE: spanish-dep.txt}
|
||||||
|
cmds:
|
||||||
|
- task: write-file
|
||||||
|
vars: {CONTENT: Hello, FILE: hello.txt}
|
||||||
|
- task: write-file
|
||||||
|
vars: {CONTENT: "$echo 'World'", FILE: world.txt}
|
||||||
|
- task: write-file
|
||||||
|
vars: {CONTENT: "!", FILE: exclamation.txt}
|
||||||
|
- task: write-file
|
||||||
|
vars: {CONTENT: "{{.SPANISH}}", FILE: spanish.txt}
|
||||||
|
- task: write-file
|
||||||
|
vars: {CONTENT: "{{.PORTUGUESE}}", FILE: portuguese.txt}
|
||||||
|
- task: write-file
|
||||||
|
vars: {CONTENT: "{{.GERMAN}}", FILE: german.txt}
|
||||||
|
- task: non-default
|
||||||
|
|
||||||
non-default:
|
write-file:
|
||||||
vars:
|
cmds:
|
||||||
PORTUGUESE: "{{.PORTUGUESE_HELLO_WORLD}}"
|
- echo {{.CONTENT}} > {{.FILE}}
|
||||||
cmds:
|
|
||||||
- task: write-file
|
non-default:
|
||||||
vars: {CONTENT: "{{.PORTUGUESE}}", FILE: portuguese2.txt}
|
vars:
|
||||||
|
PORTUGUESE: "{{.PORTUGUESE_HELLO_WORLD}}"
|
||||||
|
cmds:
|
||||||
|
- task: write-file
|
||||||
|
vars: {CONTENT: "{{.PORTUGUESE}}", FILE: portuguese2.txt}
|
||||||
|
13
testdata/status/Taskfile.yml
vendored
13
testdata/status/Taskfile.yml
vendored
@ -1,5 +1,8 @@
|
|||||||
gen-foo:
|
version: '2'
|
||||||
cmds:
|
|
||||||
- touch foo.txt
|
tasks:
|
||||||
status:
|
gen-foo:
|
||||||
- test -f foo.txt
|
cmds:
|
||||||
|
- touch foo.txt
|
||||||
|
status:
|
||||||
|
- test -f foo.txt
|
||||||
|
2
testdata/summary/Taskfile.yml
vendored
2
testdata/summary/Taskfile.yml
vendored
@ -1,4 +1,4 @@
|
|||||||
version: 2
|
version: '2'
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
task-with-summary:
|
task-with-summary:
|
||||||
|
1
testdata/vars/v1/.gitignore
vendored
1
testdata/vars/v1/.gitignore
vendored
@ -1 +0,0 @@
|
|||||||
*.txt
|
|
48
testdata/vars/v1/Taskfile.yml
vendored
48
testdata/vars/v1/Taskfile.yml
vendored
@ -1,48 +0,0 @@
|
|||||||
default:
|
|
||||||
deps: [hello]
|
|
||||||
|
|
||||||
hello:
|
|
||||||
cmds:
|
|
||||||
- echo {{.FOO}} > foo.txt
|
|
||||||
- echo {{.BAR}} > bar.txt
|
|
||||||
- echo {{.BAZ}} > baz.txt
|
|
||||||
- echo '{{.TMPL_FOO}}' > tmpl_foo.txt
|
|
||||||
- echo '{{.TMPL_BAR}}' > tmpl_bar.txt
|
|
||||||
- echo '{{.TMPL_FOO2}}' > tmpl_foo2.txt
|
|
||||||
- echo '{{.TMPL_BAR2}}' > tmpl_bar2.txt
|
|
||||||
- echo '{{.SHTMPL_FOO}}' > shtmpl_foo.txt
|
|
||||||
- echo '{{.SHTMPL_FOO2}}' > shtmpl_foo2.txt
|
|
||||||
- echo '{{.NESTEDTMPL_FOO}}' > nestedtmpl_foo.txt
|
|
||||||
- echo '{{.NESTEDTMPL_FOO2}}' > nestedtmpl_foo2.txt
|
|
||||||
- echo {{.FOO2}} > foo2.txt
|
|
||||||
- echo {{.BAR2}} > bar2.txt
|
|
||||||
- echo {{.BAZ2}} > baz2.txt
|
|
||||||
- echo '{{.TMPL2_FOO}}' > tmpl2_foo.txt
|
|
||||||
- echo '{{.TMPL2_BAR}}' > tmpl2_bar.txt
|
|
||||||
- echo '{{.TMPL2_FOO2}}' > tmpl2_foo2.txt
|
|
||||||
- echo '{{.TMPL2_BAR2}}' > tmpl2_bar2.txt
|
|
||||||
- echo '{{.SHTMPL2_FOO}}' > shtmpl2_foo.txt
|
|
||||||
- echo '{{.SHTMPL2_FOO2}}' > shtmpl2_foo2.txt
|
|
||||||
- echo '{{.NESTEDTMPL2_FOO2}}' > nestedtmpl2_foo2.txt
|
|
||||||
- echo {{.OVERRIDE}} > override.txt
|
|
||||||
vars:
|
|
||||||
FOO: foo
|
|
||||||
BAR: $echo bar
|
|
||||||
BAZ:
|
|
||||||
sh: echo baz
|
|
||||||
TMPL_FOO: "{{.FOO}}"
|
|
||||||
TMPL_BAR: "{{.BAR}}"
|
|
||||||
TMPL_FOO2: "{{.FOO2}}"
|
|
||||||
TMPL_BAR2: "{{.BAR2}}"
|
|
||||||
SHTMPL_FOO:
|
|
||||||
sh: "echo '{{.FOO}}'"
|
|
||||||
SHTMPL_FOO2:
|
|
||||||
sh: "echo '{{.FOO2}}'"
|
|
||||||
NESTEDTMPL_FOO: "{{.TMPL_FOO}}"
|
|
||||||
NESTEDTMPL_FOO2: "{{.TMPL2_FOO2}}"
|
|
||||||
OVERRIDE: "bar"
|
|
||||||
|
|
||||||
invalid-var-tmpl:
|
|
||||||
vars:
|
|
||||||
CHARS: "abcd"
|
|
||||||
INVALID: "{{range .CHARS}}no end"
|
|
12
testdata/vars/v1/Taskvars.yml
vendored
12
testdata/vars/v1/Taskvars.yml
vendored
@ -1,12 +0,0 @@
|
|||||||
FOO2: foo2
|
|
||||||
BAR2: $echo bar2
|
|
||||||
BAZ2:
|
|
||||||
sh: echo baz2
|
|
||||||
TMPL2_FOO: "{{.FOO}}"
|
|
||||||
TMPL2_BAR: "{{.BAR}}"
|
|
||||||
TMPL2_FOO2: "{{.FOO2}}"
|
|
||||||
TMPL2_BAR2: "{{.BAR2}}"
|
|
||||||
SHTMPL2_FOO2:
|
|
||||||
sh: "echo '{{.FOO2}}'"
|
|
||||||
NESTEDTMPL2_FOO2: "{{.TMPL2_FOO2}}"
|
|
||||||
OVERRIDE: "foo"
|
|
43
testdata/vars/v1/multiline/Taskfile.yml
vendored
43
testdata/vars/v1/multiline/Taskfile.yml
vendored
@ -1,43 +0,0 @@
|
|||||||
default:
|
|
||||||
vars:
|
|
||||||
MULTILINE: "\n\nfoo\n bar\nfoobar\n\nbaz\n\n"
|
|
||||||
cmds:
|
|
||||||
- task: file
|
|
||||||
vars:
|
|
||||||
CONTENT:
|
|
||||||
sh: "echo 'foo\nbar'"
|
|
||||||
FILE: "echo_foobar.txt"
|
|
||||||
- task: file
|
|
||||||
vars:
|
|
||||||
CONTENT:
|
|
||||||
sh: "echo -n 'foo\nbar'"
|
|
||||||
FILE: "echo_n_foobar.txt"
|
|
||||||
- task: file
|
|
||||||
vars:
|
|
||||||
CONTENT:
|
|
||||||
sh: echo -n "{{.MULTILINE}}"
|
|
||||||
FILE: "echo_n_multiline.txt"
|
|
||||||
- task: file
|
|
||||||
vars:
|
|
||||||
CONTENT: "{{.MULTILINE}}"
|
|
||||||
FILE: "var_multiline.txt"
|
|
||||||
- task: file
|
|
||||||
vars:
|
|
||||||
CONTENT: "{{.MULTILINE | catLines}}"
|
|
||||||
FILE: "var_catlines.txt"
|
|
||||||
- task: enumfile
|
|
||||||
vars:
|
|
||||||
LINES: "{{.MULTILINE}}"
|
|
||||||
FILE: "var_enumfile.txt"
|
|
||||||
file:
|
|
||||||
cmds:
|
|
||||||
- |
|
|
||||||
cat << EOF > '{{.FILE}}'
|
|
||||||
{{.CONTENT}}
|
|
||||||
EOF
|
|
||||||
enumfile:
|
|
||||||
cmds:
|
|
||||||
- |
|
|
||||||
cat << EOF > '{{.FILE}}'
|
|
||||||
{{range $i, $line := .LINES| splitLines}}{{$i}}:{{$line}}
|
|
||||||
{{end}}EOF
|
|
4
testdata/version/v2/Taskfile.yml
vendored
4
testdata/version/v2/Taskfile.yml
vendored
@ -1,9 +1,9 @@
|
|||||||
version: 2
|
version: '2'
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
foo:
|
foo:
|
||||||
cmds:
|
cmds:
|
||||||
- echo "Foo"
|
- echo "Foo"
|
||||||
|
|
||||||
bar:
|
bar:
|
||||||
cmds:
|
cmds:
|
||||||
- echo "Bar"
|
- echo "Bar"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user