mirror of
https://github.com/go-task/task.git
synced 2026-06-11 09:51:50 +00:00
initial pass at deferred commands
This commit is contained in:
@@ -7,6 +7,7 @@ type Cmd struct {
|
||||
Task string
|
||||
Vars *Vars
|
||||
IgnoreError bool
|
||||
Defer bool
|
||||
}
|
||||
|
||||
// Dep is a task dependency
|
||||
@@ -33,6 +34,18 @@ func (c *Cmd) UnmarshalYAML(unmarshal func(interface{}) error) error {
|
||||
c.IgnoreError = cmdStruct.IgnoreError
|
||||
return nil
|
||||
}
|
||||
var deferredCmd struct {
|
||||
Defer string
|
||||
}
|
||||
if err := unmarshal(&deferredCmd); err == nil && deferredCmd.Defer != "" {
|
||||
c.Defer = true
|
||||
if strings.HasPrefix(deferredCmd.Defer, "^") {
|
||||
c.Task = strings.TrimPrefix(deferredCmd.Defer, "^")
|
||||
} else {
|
||||
c.Cmd = deferredCmd.Defer
|
||||
}
|
||||
return nil
|
||||
}
|
||||
var taskCall struct {
|
||||
Task string
|
||||
Vars *Vars
|
||||
|
||||
@@ -19,6 +19,8 @@ vars:
|
||||
PARAM1: VALUE1
|
||||
PARAM2: VALUE2
|
||||
`
|
||||
yamlDeferredTask = `defer: ^some_task`
|
||||
yamlDeferredCmd = `defer: echo 'test'`
|
||||
)
|
||||
tests := []struct {
|
||||
content string
|
||||
@@ -41,6 +43,16 @@ vars:
|
||||
},
|
||||
}},
|
||||
},
|
||||
{
|
||||
yamlDeferredCmd,
|
||||
&taskfile.Cmd{},
|
||||
&taskfile.Cmd{Cmd: "echo 'test'", Defer: true},
|
||||
},
|
||||
{
|
||||
yamlDeferredTask,
|
||||
&taskfile.Cmd{},
|
||||
&taskfile.Cmd{Task: "some_task", Defer: true},
|
||||
},
|
||||
{
|
||||
yamlDep,
|
||||
&taskfile.Dep{},
|
||||
|
||||
Reference in New Issue
Block a user