@@ -98,61 +98,61 @@ func (e *Executor) Run(args ...string) error {
9898 }
9999
100100 for _ , a := range args {
101- if err := e .RunTask (context .Background (), a , nil ); err != nil {
101+ if err := e .RunTask (context .Background (), Call { Task : a } ); err != nil {
102102 return err
103103 }
104104 }
105105 return nil
106106}
107107
108108// RunTask runs a task by its name
109- func (e * Executor ) RunTask (ctx context.Context , name string , vars Vars ) error {
110- t , ok := e .Tasks [name ]
109+ func (e * Executor ) RunTask (ctx context.Context , call Call ) error {
110+ t , ok := e .Tasks [call . Task ]
111111 if ! ok {
112- return & taskNotFoundError {name }
112+ return & taskNotFoundError {call . Task }
113113 }
114114
115115 if atomic .AddInt32 (& t .callCount , 1 ) >= MaximumTaskCall {
116- return & MaximumTaskCallExceededError {task : name }
116+ return & MaximumTaskCallExceededError {task : call . Task }
117117 }
118118
119- if err := e .runDeps (ctx , name , vars ); err != nil {
119+ if err := e .runDeps (ctx , call ); err != nil {
120120 return err
121121 }
122122
123123 if ! e .Force {
124- upToDate , err := e .isTaskUpToDate (ctx , name , vars )
124+ upToDate , err := e .isTaskUpToDate (ctx , call )
125125 if err != nil {
126126 return err
127127 }
128128 if upToDate {
129- e .printfln (`task: Task "%s" is up to date` , name )
129+ e .printfln (`task: Task "%s" is up to date` , call . Task )
130130 return nil
131131 }
132132 }
133133
134134 for i := range t .Cmds {
135- if err := e .runCommand (ctx , name , i , vars ); err != nil {
136- return & taskRunError {name , err }
135+ if err := e .runCommand (ctx , call , i ); err != nil {
136+ return & taskRunError {call . Task , err }
137137 }
138138 }
139139 return nil
140140}
141141
142- func (e * Executor ) runDeps (ctx context.Context , task string , vars Vars ) error {
142+ func (e * Executor ) runDeps (ctx context.Context , call Call ) error {
143143 g , ctx := errgroup .WithContext (ctx )
144- t := e .Tasks [task ]
144+ t := e .Tasks [call . Task ]
145145
146146 for _ , d := range t .Deps {
147147 d := d
148148
149149 g .Go (func () error {
150- dep , err := e .ReplaceVariables (d .Task , task , vars )
150+ dep , err := e .ReplaceVariables (d .Task , call )
151151 if err != nil {
152152 return err
153153 }
154154
155- if err = e .RunTask (ctx , dep , d .Vars ); err != nil {
155+ if err = e .RunTask (ctx , Call { Task : dep , Vars : d .Vars } ); err != nil {
156156 return err
157157 }
158158 return nil
@@ -165,27 +165,27 @@ func (e *Executor) runDeps(ctx context.Context, task string, vars Vars) error {
165165 return nil
166166}
167167
168- func (e * Executor ) isTaskUpToDate (ctx context.Context , task string , vars Vars ) (bool , error ) {
169- t := e .Tasks [task ]
168+ func (e * Executor ) isTaskUpToDate (ctx context.Context , call Call ) (bool , error ) {
169+ t := e .Tasks [call . Task ]
170170
171171 if len (t .Status ) > 0 {
172- return e .isUpToDateStatus (ctx , task , vars )
172+ return e .isUpToDateStatus (ctx , call )
173173 }
174- return e .isUpToDateTimestamp (ctx , task , vars )
174+ return e .isUpToDateTimestamp (ctx , call )
175175}
176176
177- func (e * Executor ) isUpToDateStatus (ctx context.Context , task string , vars Vars ) (bool , error ) {
178- t := e .Tasks [task ]
177+ func (e * Executor ) isUpToDateStatus (ctx context.Context , call Call ) (bool , error ) {
178+ t := e .Tasks [call . Task ]
179179
180- environ , err := e .getEnviron (task , vars )
180+ environ , err := e .getEnviron (call )
181181 if err != nil {
182182 return false , err
183183 }
184- dir , err := e .getTaskDir (task , vars )
184+ dir , err := e .getTaskDir (call )
185185 if err != nil {
186186 return false , err
187187 }
188- status , err := e .ReplaceSliceVariables (t .Status , task , vars )
188+ status , err := e .ReplaceSliceVariables (t .Status , call )
189189 if err != nil {
190190 return false , err
191191 }
@@ -204,23 +204,23 @@ func (e *Executor) isUpToDateStatus(ctx context.Context, task string, vars Vars)
204204 return true , nil
205205}
206206
207- func (e * Executor ) isUpToDateTimestamp (ctx context.Context , task string , vars Vars ) (bool , error ) {
208- t := e .Tasks [task ]
207+ func (e * Executor ) isUpToDateTimestamp (ctx context.Context , call Call ) (bool , error ) {
208+ t := e .Tasks [call . Task ]
209209
210210 if len (t .Sources ) == 0 || len (t .Generates ) == 0 {
211211 return false , nil
212212 }
213213
214- dir , err := e .getTaskDir (task , vars )
214+ dir , err := e .getTaskDir (call )
215215 if err != nil {
216216 return false , err
217217 }
218218
219- sources , err := e .ReplaceSliceVariables (t .Sources , task , vars )
219+ sources , err := e .ReplaceSliceVariables (t .Sources , call )
220220 if err != nil {
221221 return false , err
222222 }
223- generates , err := e .ReplaceSliceVariables (t .Generates , task , vars )
223+ generates , err := e .ReplaceSliceVariables (t .Generates , call )
224224 if err != nil {
225225 return false , err
226226 }
@@ -238,33 +238,33 @@ func (e *Executor) isUpToDateTimestamp(ctx context.Context, task string, vars Va
238238 return generatesMinTime .After (sourcesMaxTime ), nil
239239}
240240
241- func (e * Executor ) runCommand (ctx context.Context , task string , i int , vars Vars ) error {
242- t := e .Tasks [task ]
241+ func (e * Executor ) runCommand (ctx context.Context , call Call , i int ) error {
242+ t := e .Tasks [call . Task ]
243243 cmd := t .Cmds [i ]
244244
245245 if cmd .Cmd == "" {
246246 cmdVars := make (Vars , len (cmd .Vars ))
247247 for k , v := range cmd .Vars {
248- v , err := e .ReplaceVariables (v , task , vars )
248+ v , err := e .ReplaceVariables (v , call )
249249 if err != nil {
250250 return err
251251 }
252252 cmdVars [k ] = v
253253 }
254- return e .RunTask (ctx , cmd .Task , cmdVars )
254+ return e .RunTask (ctx , Call { Task : cmd .Task , Vars : cmdVars } )
255255 }
256256
257- c , err := e .ReplaceVariables (cmd .Cmd , task , vars )
257+ c , err := e .ReplaceVariables (cmd .Cmd , call )
258258 if err != nil {
259259 return err
260260 }
261261
262- dir , err := e .getTaskDir (task , vars )
262+ dir , err := e .getTaskDir (call )
263263 if err != nil {
264264 return err
265265 }
266266
267- envs , err := e .getEnviron (task , vars )
267+ envs , err := e .getEnviron (call )
268268 if err != nil {
269269 return err
270270 }
@@ -294,23 +294,23 @@ func (e *Executor) runCommand(ctx context.Context, task string, i int, vars Vars
294294 return nil
295295}
296296
297- func (e * Executor ) getTaskDir (task string , vars Vars ) (string , error ) {
298- t := e .Tasks [task ]
297+ func (e * Executor ) getTaskDir (call Call ) (string , error ) {
298+ t := e .Tasks [call . Task ]
299299
300- exeDir , err := e .ReplaceVariables (e .Dir , task , vars )
300+ exeDir , err := e .ReplaceVariables (e .Dir , call )
301301 if err != nil {
302302 return "" , err
303303 }
304- taskDir , err := e .ReplaceVariables (t .Dir , task , vars )
304+ taskDir , err := e .ReplaceVariables (t .Dir , call )
305305 if err != nil {
306306 return "" , err
307307 }
308308
309309 return filepath .Join (exeDir , taskDir ), nil
310310}
311311
312- func (e * Executor ) getEnviron (task string , vars Vars ) ([]string , error ) {
313- t := e .Tasks [task ]
312+ func (e * Executor ) getEnviron (call Call ) ([]string , error ) {
313+ t := e .Tasks [call . Task ]
314314
315315 if t .Env == nil {
316316 return nil , nil
@@ -319,7 +319,7 @@ func (e *Executor) getEnviron(task string, vars Vars) ([]string, error) {
319319 envs := os .Environ ()
320320
321321 for k , v := range t .Env {
322- env , err := e .ReplaceVariables (fmt .Sprintf ("%s=%s" , k , v ), task , vars )
322+ env , err := e .ReplaceVariables (fmt .Sprintf ("%s=%s" , k , v ), call )
323323 if err != nil {
324324 return nil , err
325325 }
0 commit comments