Skip to content

Commit

Permalink
Move openDatabricksConfigFile to utils (#1067)
Browse files Browse the repository at this point in the history
Call it from relevant places directly, since the command might not be
registered
  • Loading branch information
ilia-db authored Feb 12, 2024
1 parent f2f0126 commit e5f0780
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 48 deletions.
8 changes: 3 additions & 5 deletions packages/databricks-vscode/src/cli/CliWrapper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@ import {
execFile as execFileCb,
spawn,
} from "child_process";
import {ExtensionContext, window, commands, Uri} from "vscode";
import {ExtensionContext, window, Uri} from "vscode";
import {SyncDestinationMapper} from "../sync/SyncDestination";
import {workspaceConfigs} from "../vscode-objs/WorkspaceConfigs";
import {promisify} from "node:util";
import {logging} from "@databricks/databricks-sdk";
import {Loggers} from "../logger";
import {Context, context} from "@databricks/databricks-sdk/dist/context";
import {Cloud} from "../utils/constants";
import {EnvVarGenerators, UrlUtils} from "../utils";
import {EnvVarGenerators, FileUtils, UrlUtils} from "../utils";
import {AuthProvider} from "../configuration/auth/AuthProvider";
import {removeUndefinedKeys} from "../utils/envVarGenerators";
import {quote} from "shell-quote";
Expand Down Expand Up @@ -230,9 +230,7 @@ export class CliWrapper {
"Ignore"
);
if (choice === openAction) {
commands.executeCommand(
"databricks.connection.openDatabricksConfigFile"
);
await FileUtils.openDatabricksConfigFile();
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,16 @@
import {Cluster} from "../sdk-extensions";
import {
Disposable,
FileSystemError,
QuickPickItem,
QuickPickItemKind,
ThemeIcon,
Uri,
window,
workspace,
} from "vscode";
import {ClusterListDataProvider} from "../cluster/ClusterListDataProvider";
import {ClusterModel} from "../cluster/ClusterModel";
import {ConnectionManager} from "./ConnectionManager";
import {FileUtils, UrlUtils} from "../utils";
import {workspaceConfigs} from "../vscode-objs/WorkspaceConfigs";
import {UrlUtils} from "../utils";
import {WorkspaceFsCommands} from "../workspace-fs";
import path from "node:path";
import {ConfigModel} from "./models/ConfigModel";

function formatQuickPickClusterSize(sizeInMB: number): string {
Expand Down Expand Up @@ -78,34 +73,6 @@ export class ConnectionCommands implements Disposable {
);
}

openDatabricksConfigFileCommand() {
return async () => {
const homeDir = FileUtils.getHomedir();
let filePath =
workspaceConfigs.databrickscfgLocation ??
process.env.DATABRICKS_CONFIG_FILE ??
path.join(homeDir, ".databrickscfg");

if (filePath.startsWith("~/")) {
filePath = path.join(homeDir, filePath.slice(2));
}
const uri = Uri.file(path.normalize(filePath));

try {
await workspace.fs.stat(uri);
} catch (e) {
if (e instanceof FileSystemError && e.code === "FileNotFound") {
await workspace.fs.writeFile(uri, Buffer.from(""));
} else {
throw e;
}
}

const doc = await workspace.openTextDocument(uri);
await window.showTextDocument(doc);
};
}

/**
* Attach to cluster from settings. If attach fails or no cluster is configured
* then show dialog to select (or create) a cluster. The selected cluster is saved
Expand Down
6 changes: 2 additions & 4 deletions packages/databricks-vscode/src/configuration/LoginWizard.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import {
PersonalAccessTokenAuthProvider,
ProfileAuthProvider,
} from "./auth/AuthProvider";
import {UrlUtils} from "../utils";
import {FileUtils, UrlUtils} from "../utils";
import {
loadConfigFile,
AuthType as SdkAuthType,
Expand Down Expand Up @@ -221,9 +221,7 @@ export class LoginWizard {
});

if (pick.openDatabricksConfigFile) {
await commands.executeCommand(
"databricks.connection.openDatabricksConfigFile"
);
await FileUtils.openDatabricksConfigFile();
return;
}

Expand Down
5 changes: 2 additions & 3 deletions packages/databricks-vscode/src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import {PublicApi} from "@databricks/databricks-vscode-types";
import {LoggerManager, Loggers} from "./logger";
import {logging} from "@databricks/databricks-sdk";
import {workspaceConfigs} from "./vscode-objs/WorkspaceConfigs";
import {PackageJsonUtils, UtilsCommands} from "./utils";
import {FileUtils, PackageJsonUtils, UtilsCommands} from "./utils";
import {ConfigureAutocomplete} from "./language/ConfigureAutocomplete";
import {
WorkspaceFsAccessVerifier,
Expand Down Expand Up @@ -466,8 +466,7 @@ export async function activate(
),
telemetry.registerCommand(
"databricks.connection.openDatabricksConfigFile",
connectionCommands.openDatabricksConfigFileCommand(),
connectionCommands
FileUtils.openDatabricksConfigFile
),
telemetry.registerCommand(
"databricks.connection.attachCluster",
Expand Down
30 changes: 28 additions & 2 deletions packages/databricks-vscode/src/utils/fileUtils.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import {TextDecoder} from "util";
import {Uri, workspace} from "vscode";
import {Uri, workspace, FileSystemError, window} from "vscode";
import {LocalUri} from "../sync/SyncDestination";
import {ConnectionManager} from "../configuration/ConnectionManager";
import type {ConnectionManager} from "../configuration/ConnectionManager";
import {workspaceConfigs} from "../vscode-objs/WorkspaceConfigs";
import {exists} from "fs-extra";
import path from "path";
import {homedir} from "os";
Expand Down Expand Up @@ -48,3 +49,28 @@ export async function waitForDatabricksProject(
export function getHomedir() {
return process.env.HOME ?? homedir();
}

export async function openDatabricksConfigFile() {
const homeDir = getHomedir();
let filePath =
workspaceConfigs.databrickscfgLocation ??
process.env.DATABRICKS_CONFIG_FILE ??
path.join(homeDir, ".databrickscfg");

if (filePath.startsWith("~/")) {
filePath = path.join(homeDir, filePath.slice(2));
}
const uri = Uri.file(path.normalize(filePath));
try {
await workspace.fs.stat(uri);
} catch (e) {
if (e instanceof FileSystemError && e.code === "FileNotFound") {
await workspace.fs.writeFile(uri, Buffer.from(""));
} else {
throw e;
}
}

const doc = await workspace.openTextDocument(uri);
await window.showTextDocument(doc);
}

0 comments on commit e5f0780

Please sign in to comment.