Skip to content

Commit 7a7f66d

Browse files
committed
refactor: join task and vars parameters in a single Call struct
1 parent a1140aa commit 7a7f66d

File tree

4 files changed

+58
-52
lines changed

4 files changed

+58
-52
lines changed

command.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,3 +66,9 @@ func (d *Dep) UnmarshalYAML(unmarshal func(interface{}) error) error {
6666
}
6767
return ErrCantUnmarshalDep
6868
}
69+
70+
// Call is the parameters to a task call
71+
type Call struct {
72+
Task string
73+
Vars Vars
74+
}

task.go

Lines changed: 42 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}

variable_handling.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ func (e *Executor) handleDynamicVariableContent(value string) (string, error) {
5656
return result, nil
5757
}
5858

59-
func (e *Executor) getVariables(task string, vars Vars) (map[string]string, error) {
60-
t := e.Tasks[task]
59+
func (e *Executor) getVariables(call Call) (map[string]string, error) {
60+
t := e.Tasks[call.Task]
6161

6262
localVariables := make(map[string]string)
6363
for key, value := range t.Vars {
@@ -79,8 +79,8 @@ func (e *Executor) getVariables(task string, vars Vars) (map[string]string, erro
7979
for key, value := range getEnvironmentVariables() {
8080
localVariables[key] = value
8181
}
82-
if vars != nil {
83-
for k, v := range vars {
82+
if call.Vars != nil {
83+
for k, v := range call.Vars {
8484
val, err := e.handleDynamicVariableContent(v)
8585
if err != nil {
8686
return nil, err
@@ -120,11 +120,11 @@ func init() {
120120
}
121121

122122
// ReplaceSliceVariables writes vars into initial string slice
123-
func (e *Executor) ReplaceSliceVariables(initials []string, task string, vars Vars) ([]string, error) {
123+
func (e *Executor) ReplaceSliceVariables(initials []string, call Call) ([]string, error) {
124124
result := make([]string, len(initials))
125125
for i, s := range initials {
126126
var err error
127-
result[i], err = e.ReplaceVariables(s, task, vars)
127+
result[i], err = e.ReplaceVariables(s, call)
128128
if err != nil {
129129
return nil, err
130130
}
@@ -133,8 +133,8 @@ func (e *Executor) ReplaceSliceVariables(initials []string, task string, vars Va
133133
}
134134

135135
// ReplaceVariables writes vars into initial string
136-
func (e *Executor) ReplaceVariables(initial, task string, vars Vars) (string, error) {
137-
vars, err := e.getVariables(task, vars)
136+
func (e *Executor) ReplaceVariables(initial string, call Call) (string, error) {
137+
vars, err := e.getVariables(call)
138138
if err != nil {
139139
return "", err
140140
}

watch.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ func (e *Executor) watchTasks(args ...string) error {
1515

1616
// run tasks on init
1717
for _, a := range args {
18-
if err := e.RunTask(context.Background(), a, nil); err != nil {
18+
if err := e.RunTask(context.Background(), Call{Task: a}); err != nil {
1919
e.println(err)
2020
break
2121
}
@@ -41,7 +41,7 @@ loop:
4141
select {
4242
case <-watcher.Events:
4343
for _, a := range args {
44-
if err := e.RunTask(context.Background(), a, nil); err != nil {
44+
if err := e.RunTask(context.Background(), Call{Task: a}); err != nil {
4545
e.println(err)
4646
continue loop
4747
}

0 commit comments

Comments
 (0)