databricks-cli/bundle/if.go

41 lines
724 B
Go

package bundle
import (
"context"
"github.com/databricks/cli/libs/diag"
)
type ifMutator struct {
condition func(context.Context, *Bundle) (bool, error)
onTrueMutator Mutator
onFalseMutator Mutator
}
func If(
condition func(context.Context, *Bundle) (bool, error),
onTrueMutator Mutator,
onFalseMutator Mutator,
) Mutator {
return &ifMutator{
condition, onTrueMutator, onFalseMutator,
}
}
func (m *ifMutator) Apply(ctx context.Context, b *Bundle) diag.Diagnostics {
v, err := m.condition(ctx, b)
if err != nil {
return diag.FromErr(err)
}
if v {
return Apply(ctx, b, m.onTrueMutator)
} else {
return Apply(ctx, b, m.onFalseMutator)
}
}
func (m *ifMutator) Name() string {
return "If"
}