INNER CODE UNIT · Go
parallelize
Clever/microplane · cmd/helpers.go:32
func parallelize(repos []lib.Repo, f func(lib.Repo, context.Context) error) error {
return parallelizeLimited(repos, f, 10)
}
// parallelize take a list of repos and applies a function (clone, plan, ...) to them
func parallelizeLimited(repos []lib.Repo, f func(lib.Repo, context.Context) error, parallelismLimit int64) error {
ctx := context.Background()
var eg errgroup.Group
parallelLimit := semaphore.NewWeighted(parallelismLimit)
for _, r := range repos {
eg.Add(1)
go func(repo lib.Repo) {
parallelLimit.Acquire(ctx, 1)
defer parallelLimit.Release(1)
defer eg.Done()
err := f(repo, ctx)
if err != nil {