databricks-cli/bundle/deploy/metadata/upload.go

43 lines
953 B
Go

package metadata
import (
"bytes"
"context"
"encoding/json"
"path"
"github.com/databricks/cli/bundle"
"github.com/databricks/cli/libs/diag"
"github.com/databricks/cli/libs/filer"
)
const metadataFileName = "metadata.json"
func metadataFilePath(b *bundle.Bundle) string {
return path.Join(b.Config.Workspace.StatePath, metadataFileName)
}
type upload struct{}
func Upload() bundle.Mutator {
return &upload{}
}
func (m *upload) Name() string {
return "metadata.Upload"
}
func (m *upload) Apply(ctx context.Context, b *bundle.Bundle) diag.Diagnostics {
f, err := filer.NewWorkspaceFilesClient(b.WorkspaceClient(), b.Config.Workspace.StatePath)
if err != nil {
return diag.FromErr(err)
}
metadata, err := json.MarshalIndent(b.Metadata, "", " ")
if err != nil {
return diag.FromErr(err)
}
return diag.FromErr(f.Write(ctx, metadataFileName, bytes.NewReader(metadata), filer.CreateParentDirectories, filer.OverwriteIfExists))
}