package bundle import ( "context" "sync" "github.com/databricks/cli/libs/diag" ) type parallel struct { mutators []ReadOnlyMutator } func (m *parallel) Name() string { return "parallel" } func (m *parallel) Apply(ctx context.Context, rb ReadOnlyBundle) diag.Diagnostics { var wg sync.WaitGroup var mu sync.Mutex var diags diag.Diagnostics wg.Add(len(m.mutators)) for _, mutator := range m.mutators { go func(mutator ReadOnlyMutator) { defer wg.Done() d := ApplyReadOnly(ctx, rb, mutator) mu.Lock() diags = diags.Extend(d) mu.Unlock() }(mutator) } wg.Wait() return diags } // Parallel runs the given mutators in parallel. func Parallel(mutators ...ReadOnlyMutator) ReadOnlyMutator { return ¶llel{ mutators: mutators, } }