package terraform import ( "context" "encoding/json" "os" "path/filepath" "github.com/databricks/cli/bundle" "github.com/databricks/cli/bundle/internal/tf/schema" "github.com/databricks/cli/libs/diag" "github.com/databricks/cli/libs/dyn" ) type write struct{} func (w *write) Name() string { return "terraform.Write" } func (w *write) Apply(ctx context.Context, b *bundle.Bundle) diag.Diagnostics { dir, err := Dir(ctx, b) if err != nil { return diag.FromErr(err) } var root *schema.Root err = b.Config.Mutate(func(v dyn.Value) (dyn.Value, error) { root, err = BundleToTerraformWithDynValue(ctx, v) return v, err }) if err != nil { return diag.FromErr(err) } f, err := os.Create(filepath.Join(dir, TerraformConfigFileName)) if err != nil { return diag.FromErr(err) } defer f.Close() enc := json.NewEncoder(f) enc.SetIndent("", " ") err = enc.Encode(root) if err != nil { return diag.FromErr(err) } return nil } // Write returns a [bundle.Mutator] that converts resources in a bundle configuration // to the equivalent Terraform JSON representation and writes the result to a file. func Write() bundle.Mutator { return &write{} }