@@ -158,24 +158,11 @@ func (e *Executor) runDeps(ctx context.Context, call Call) error {
158158 d := d
159159
160160 g .Go (func () error {
161- dep , err := e .ReplaceVariables (d .Task , call )
161+ c , err := e .toCall (d .Task , d . Vars , call )
162162 if err != nil {
163163 return err
164164 }
165- depVars := make (Vars , len (d .Vars ))
166- for k , v := range d .Vars {
167- static , err := e .ReplaceVariables (v .Static , call )
168- if err != nil {
169- return err
170- }
171- sh , err := e .ReplaceVariables (v .Sh , call )
172- if err != nil {
173- return err
174- }
175- depVars [k ] = Var {Static : static , Sh : sh }
176- }
177-
178- return e .RunTask (ctx , Call {Task : dep , Vars : depVars })
165+ return e .RunTask (ctx , c )
179166 })
180167 }
181168
@@ -259,19 +246,11 @@ func (e *Executor) runCommand(ctx context.Context, call Call, i int) error {
259246 cmd := t .Cmds [i ]
260247
261248 if cmd .Cmd == "" {
262- cmdVars := make (Vars , len (cmd .Vars ))
263- for k , v := range cmd .Vars {
264- static , err := e .ReplaceVariables (v .Static , call )
265- if err != nil {
266- return err
267- }
268- sh , err := e .ReplaceVariables (v .Sh , call )
269- if err != nil {
270- return err
271- }
272- cmdVars [k ] = Var {Static : static , Sh : sh }
249+ c , err := e .toCall (cmd .Task , cmd .Vars , call )
250+ if err != nil {
251+ return err
273252 }
274- return e .RunTask (ctx , Call { Task : cmd . Task , Vars : cmdVars } )
253+ return e .RunTask (ctx , c )
275254 }
276255
277256 c , err := e .ReplaceVariables (cmd .Cmd , call )
@@ -311,6 +290,27 @@ func (e *Executor) runCommand(ctx context.Context, call Call, i int) error {
311290 return execext .RunCommand (opts )
312291}
313292
293+ func (e * Executor ) toCall (task string , vs Vars , call Call ) (Call , error ) {
294+ task , err := e .ReplaceVariables (task , call )
295+ if err != nil {
296+ return Call {}, err
297+ }
298+
299+ newVars := make (Vars , len (vs ))
300+ for k , v := range vs {
301+ static , err := e .ReplaceVariables (v .Static , call )
302+ if err != nil {
303+ return Call {}, err
304+ }
305+ sh , err := e .ReplaceVariables (v .Sh , call )
306+ if err != nil {
307+ return Call {}, err
308+ }
309+ newVars [k ] = Var {Static : static , Sh : sh }
310+ }
311+ return Call {Task : task , Vars : newVars }, nil
312+ }
313+
314314func (e * Executor ) getTaskDir (call Call ) (string , error ) {
315315 t := e .Tasks [call .Task ]
316316
0 commit comments