1
0
mirror of https://github.com/go-task/task.git synced 2025-03-19 21:17:46 +02:00

deduplicate conversion from dep and cmd to call

This commit is contained in:
Andrey Nering 2017-07-15 15:46:53 -03:00
parent ce27e973be
commit 968a29d869

54
task.go
View File

@ -158,24 +158,11 @@ func (e *Executor) runDeps(ctx context.Context, call Call) error {
d := d d := d
g.Go(func() error { g.Go(func() error {
dep, err := e.ReplaceVariables(d.Task, call) c, err := e.toCall(d.Task, d.Vars, call)
if err != nil { if err != nil {
return err return err
} }
depVars := make(Vars, len(d.Vars)) return e.RunTask(ctx, c)
for k, v := range d.Vars {
static, err := e.ReplaceVariables(v.Static, call)
if err != nil {
return err
}
sh, err := e.ReplaceVariables(v.Sh, call)
if err != nil {
return err
}
depVars[k] = Var{Static: static, Sh: sh}
}
return e.RunTask(ctx, Call{Task: dep, Vars: depVars})
}) })
} }
@ -259,19 +246,11 @@ func (e *Executor) runCommand(ctx context.Context, call Call, i int) error {
cmd := t.Cmds[i] cmd := t.Cmds[i]
if cmd.Cmd == "" { if cmd.Cmd == "" {
cmdVars := make(Vars, len(cmd.Vars)) c, err := e.toCall(cmd.Task, cmd.Vars, call)
for k, v := range cmd.Vars { if err != nil {
static, err := e.ReplaceVariables(v.Static, call) return err
if err != nil {
return err
}
sh, err := e.ReplaceVariables(v.Sh, call)
if err != nil {
return err
}
cmdVars[k] = Var{Static: static, Sh: sh}
} }
return e.RunTask(ctx, Call{Task: cmd.Task, Vars: cmdVars}) return e.RunTask(ctx, c)
} }
c, err := e.ReplaceVariables(cmd.Cmd, call) c, err := e.ReplaceVariables(cmd.Cmd, call)
@ -311,6 +290,27 @@ func (e *Executor) runCommand(ctx context.Context, call Call, i int) error {
return execext.RunCommand(opts) return execext.RunCommand(opts)
} }
func (e *Executor) toCall(task string, vs Vars, call Call) (Call, error) {
task, err := e.ReplaceVariables(task, call)
if err != nil {
return Call{}, err
}
newVars := make(Vars, len(vs))
for k, v := range vs {
static, err := e.ReplaceVariables(v.Static, call)
if err != nil {
return Call{}, err
}
sh, err := e.ReplaceVariables(v.Sh, call)
if err != nil {
return Call{}, err
}
newVars[k] = Var{Static: static, Sh: sh}
}
return Call{Task: task, Vars: newVars}, nil
}
func (e *Executor) getTaskDir(call Call) (string, error) { func (e *Executor) getTaskDir(call Call) (string, error) {
t := e.Tasks[call.Task] t := e.Tasks[call.Task]