Skip to content

Commit

Permalink
deduplicate conversion from dep and cmd to call
Browse files Browse the repository at this point in the history
  • Loading branch information
andreynering committed Jul 15, 2017
1 parent ce27e97 commit 968a29d
Showing 1 changed file with 27 additions and 27 deletions.
54 changes: 27 additions & 27 deletions task.go
Original file line number Diff line number Diff line change
Expand Up @@ -158,24 +158,11 @@ func (e *Executor) runDeps(ctx context.Context, call Call) error {
d := d

g.Go(func() error {
dep, err := e.ReplaceVariables(d.Task, call)
c, err := e.toCall(d.Task, d.Vars, call)
if err != nil {
return err
}
depVars := make(Vars, len(d.Vars))
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})
return e.RunTask(ctx, c)
})
}

Expand Down Expand Up @@ -259,19 +246,11 @@ func (e *Executor) runCommand(ctx context.Context, call Call, i int) error {
cmd := t.Cmds[i]

if cmd.Cmd == "" {
cmdVars := make(Vars, len(cmd.Vars))
for k, v := range cmd.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
}
cmdVars[k] = Var{Static: static, Sh: sh}
c, err := e.toCall(cmd.Task, cmd.Vars, call)
if err != nil {
return err
}
return e.RunTask(ctx, Call{Task: cmd.Task, Vars: cmdVars})
return e.RunTask(ctx, c)
}

c, err := e.ReplaceVariables(cmd.Cmd, call)
Expand Down Expand Up @@ -311,6 +290,27 @@ func (e *Executor) runCommand(ctx context.Context, call Call, i int) error {
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) {
t := e.Tasks[call.Task]

Expand Down

0 comments on commit 968a29d

Please sign in to comment.