2022-11-28 09:59:43 +00:00
|
|
|
package bundle
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
2023-03-22 14:54:10 +00:00
|
|
|
|
2023-05-16 16:35:39 +00:00
|
|
|
"github.com/databricks/cli/libs/log"
|
2022-11-28 09:59:43 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
// Mutator is the interface type that mutates a bundle's configuration or internal state.
|
|
|
|
// This makes every mutation or action observable and debuggable.
|
|
|
|
type Mutator interface {
|
|
|
|
// Name returns the mutators name.
|
|
|
|
Name() string
|
|
|
|
|
|
|
|
// Apply mutates the specified bundle object.
|
2023-05-24 12:45:19 +00:00
|
|
|
Apply(context.Context, *Bundle) error
|
2022-11-28 09:59:43 +00:00
|
|
|
}
|
|
|
|
|
2023-05-24 12:45:19 +00:00
|
|
|
func Apply(ctx context.Context, b *Bundle, m Mutator) error {
|
2023-03-22 14:54:10 +00:00
|
|
|
ctx = log.NewContext(ctx, log.GetLogger(ctx).With("mutator", m.Name()))
|
|
|
|
|
|
|
|
log.Debugf(ctx, "Apply")
|
2023-05-24 12:45:19 +00:00
|
|
|
err := m.Apply(ctx, b)
|
2023-03-22 14:54:10 +00:00
|
|
|
if err != nil {
|
|
|
|
log.Errorf(ctx, "Error: %s", err)
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2022-11-28 09:59:43 +00:00
|
|
|
return nil
|
|
|
|
}
|