INNER CODE UNIT · Go
parallelizeLimited
Clever/microplane · cmd/helpers.go:37
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 {
eg.Error(err)
return
}
}(r)
}