mirror of https://github.com/databricks/cli.git
49 lines
1.1 KiB
Go
49 lines
1.1 KiB
Go
|
package mutator
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
|
||
|
"github.com/databricks/cli/bundle"
|
||
|
"github.com/databricks/cli/libs/diag"
|
||
|
"github.com/databricks/cli/libs/dyn"
|
||
|
)
|
||
|
|
||
|
type syncDefaultPath struct{}
|
||
|
|
||
|
// SyncDefaultPath configures the default sync path to be equal to the bundle root.
|
||
|
func SyncDefaultPath() bundle.Mutator {
|
||
|
return &syncDefaultPath{}
|
||
|
}
|
||
|
|
||
|
func (m *syncDefaultPath) Name() string {
|
||
|
return "SyncDefaultPath"
|
||
|
}
|
||
|
|
||
|
func (m *syncDefaultPath) Apply(ctx context.Context, b *bundle.Bundle) diag.Diagnostics {
|
||
|
isset := false
|
||
|
err := b.Config.Mutate(func(v dyn.Value) (dyn.Value, error) {
|
||
|
pv, _ := dyn.Get(v, "sync.paths")
|
||
|
|
||
|
// If the sync paths field is already set, do nothing.
|
||
|
// We know it is set if its value is either a nil or a sequence (empty or not).
|
||
|
switch pv.Kind() {
|
||
|
case dyn.KindNil, dyn.KindSequence:
|
||
|
isset = true
|
||
|
}
|
||
|
|
||
|
return v, nil
|
||
|
})
|
||
|
if err != nil {
|
||
|
return diag.FromErr(err)
|
||
|
}
|
||
|
|
||
|
// If the sync paths field is already set, do nothing.
|
||
|
if isset {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// Set the sync paths to the default value.
|
||
|
b.Config.Sync.Paths = []string{"."}
|
||
|
return nil
|
||
|
}
|