1
0
mirror of https://github.com/go-task/task.git synced 2024-12-14 10:52:43 +02:00
task/taskfile/task.go

97 lines
1.9 KiB
Go
Raw Normal View History

package taskfile
import (
"errors"
)
2019-02-24 10:24:57 +02:00
// Tasks represents a group of tasks
type Tasks map[string]*Task
// Task represents a task
type Task struct {
2019-12-08 01:09:16 +02:00
Task string
Cmds []*Cmd
Deps []*Dep
Label string
2019-12-08 01:09:16 +02:00
Desc string
Summary string
Sources []string
Generates []string
Status []string
Preconditions []*Precondition
2019-12-08 01:09:16 +02:00
Dir string
Vars *Vars
Env *Vars
2019-12-08 01:09:16 +02:00
Silent bool
Method string
Prefix string
IgnoreError bool
}
var (
// ErrCantUnmarshalTask is returned for invalid task YAML
ErrCantUnmarshalTask = errors.New("task: can't unmarshal task value")
)
func (t *Task) Name() string {
if t.Label != "" {
return t.Label
}
return t.Task
}
func (t *Task) UnmarshalYAML(unmarshal func(interface{}) error) error {
var cmd Cmd
if err := unmarshal(&cmd); err == nil && cmd.Cmd != "" {
t.Cmds = append(t.Cmds, &cmd)
return nil
}
var cmds []*Cmd
if err := unmarshal(&cmds); err == nil && len(cmds) > 0 {
t.Cmds = cmds
return nil
}
var task struct {
Cmds []*Cmd
Deps []*Dep
Label string
Desc string
Summary string
Sources []string
Generates []string
Status []string
Preconditions []*Precondition
Dir string
Vars *Vars
Env *Vars
Silent bool
Method string
Prefix string
IgnoreError bool `yaml:"ignore_error"`
}
if err := unmarshal(&task); err == nil {
t.Cmds = task.Cmds
t.Deps = task.Deps
t.Label = task.Label
t.Desc = task.Desc
t.Summary = task.Summary
t.Sources = task.Sources
t.Generates = task.Generates
t.Status = task.Status
t.Preconditions = task.Preconditions
t.Dir = task.Dir
t.Vars = task.Vars
t.Env = task.Env
t.Silent = task.Silent
t.Method = task.Method
t.Prefix = task.Prefix
t.IgnoreError = task.IgnoreError
return nil
}
return ErrCantUnmarshalTask
}