buildr/internal/execution/base_task.go

34 lines
510 B
Go

package execution
import (
"context"
"golang.org/x/sync/errgroup"
)
type TaskDependencies []Task
func (d *TaskDependencies) AddDependentTask(other Task) {
deps := *d
deps = append(deps, other)
*d = deps
}
func (d *TaskDependencies) Execute(ctx context.Context, spec Spec) error {
if len(*d) < 1 {
return nil
}
deps := *d
grp, grpCtx := errgroup.WithContext(ctx)
for i := range deps {
dep := deps[i]
grp.Go(func() error {
return dep.Execute(grpCtx, spec)
})
}
return grp.Wait()
}