package mutator import ( "context" "fmt" "path" "strings" "github.com/databricks/bricks/bundle" ) type expandWorkspaceRoot struct{} // ExpandWorkspaceRoot expands ~ if present in the workspace root. func ExpandWorkspaceRoot() bundle.Mutator { return &expandWorkspaceRoot{} } func (m *expandWorkspaceRoot) Name() string { return "ExpandWorkspaceRoot" } func (m *expandWorkspaceRoot) Apply(ctx context.Context, b *bundle.Bundle) ([]bundle.Mutator, error) { root := b.Config.Workspace.Root if root == "" { return nil, fmt.Errorf("unable to expand workspace root: workspace root not defined") } currentUser := b.Config.Workspace.CurrentUser if currentUser == nil || currentUser.UserName == "" { return nil, fmt.Errorf("unable to expand workspace root: current user not set") } if strings.HasPrefix(root, "~/") { home := fmt.Sprintf("/Users/%s", currentUser.UserName) b.Config.Workspace.Root = path.Join(home, root[2:]) } return nil, nil }