Skip to content

Commit e5f0780

Browse files
authored
Move openDatabricksConfigFile to utils (#1067)
Call it from relevant places directly, since the command might not be registered
1 parent f2f0126 commit e5f0780

File tree

5 files changed

+36
-48
lines changed

5 files changed

+36
-48
lines changed

packages/databricks-vscode/src/cli/CliWrapper.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ import {
44
execFile as execFileCb,
55
spawn,
66
} from "child_process";
7-
import {ExtensionContext, window, commands, Uri} from "vscode";
7+
import {ExtensionContext, window, Uri} from "vscode";
88
import {SyncDestinationMapper} from "../sync/SyncDestination";
99
import {workspaceConfigs} from "../vscode-objs/WorkspaceConfigs";
1010
import {promisify} from "node:util";
1111
import {logging} from "@databricks/databricks-sdk";
1212
import {Loggers} from "../logger";
1313
import {Context, context} from "@databricks/databricks-sdk/dist/context";
1414
import {Cloud} from "../utils/constants";
15-
import {EnvVarGenerators, UrlUtils} from "../utils";
15+
import {EnvVarGenerators, FileUtils, UrlUtils} from "../utils";
1616
import {AuthProvider} from "../configuration/auth/AuthProvider";
1717
import {removeUndefinedKeys} from "../utils/envVarGenerators";
1818
import {quote} from "shell-quote";
@@ -230,9 +230,7 @@ export class CliWrapper {
230230
"Ignore"
231231
);
232232
if (choice === openAction) {
233-
commands.executeCommand(
234-
"databricks.connection.openDatabricksConfigFile"
235-
);
233+
await FileUtils.openDatabricksConfigFile();
236234
}
237235
}
238236

packages/databricks-vscode/src/configuration/ConnectionCommands.ts

Lines changed: 1 addition & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,16 @@
11
import {Cluster} from "../sdk-extensions";
22
import {
33
Disposable,
4-
FileSystemError,
54
QuickPickItem,
65
QuickPickItemKind,
76
ThemeIcon,
8-
Uri,
97
window,
10-
workspace,
118
} from "vscode";
129
import {ClusterListDataProvider} from "../cluster/ClusterListDataProvider";
1310
import {ClusterModel} from "../cluster/ClusterModel";
1411
import {ConnectionManager} from "./ConnectionManager";
15-
import {FileUtils, UrlUtils} from "../utils";
16-
import {workspaceConfigs} from "../vscode-objs/WorkspaceConfigs";
12+
import {UrlUtils} from "../utils";
1713
import {WorkspaceFsCommands} from "../workspace-fs";
18-
import path from "node:path";
1914
import {ConfigModel} from "./models/ConfigModel";
2015

2116
function formatQuickPickClusterSize(sizeInMB: number): string {
@@ -78,34 +73,6 @@ export class ConnectionCommands implements Disposable {
7873
);
7974
}
8075

81-
openDatabricksConfigFileCommand() {
82-
return async () => {
83-
const homeDir = FileUtils.getHomedir();
84-
let filePath =
85-
workspaceConfigs.databrickscfgLocation ??
86-
process.env.DATABRICKS_CONFIG_FILE ??
87-
path.join(homeDir, ".databrickscfg");
88-
89-
if (filePath.startsWith("~/")) {
90-
filePath = path.join(homeDir, filePath.slice(2));
91-
}
92-
const uri = Uri.file(path.normalize(filePath));
93-
94-
try {
95-
await workspace.fs.stat(uri);
96-
} catch (e) {
97-
if (e instanceof FileSystemError && e.code === "FileNotFound") {
98-
await workspace.fs.writeFile(uri, Buffer.from(""));
99-
} else {
100-
throw e;
101-
}
102-
}
103-
104-
const doc = await workspace.openTextDocument(uri);
105-
await window.showTextDocument(doc);
106-
};
107-
}
108-
10976
/**
11077
* Attach to cluster from settings. If attach fails or no cluster is configured
11178
* then show dialog to select (or create) a cluster. The selected cluster is saved

packages/databricks-vscode/src/configuration/LoginWizard.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import {
2121
PersonalAccessTokenAuthProvider,
2222
ProfileAuthProvider,
2323
} from "./auth/AuthProvider";
24-
import {UrlUtils} from "../utils";
24+
import {FileUtils, UrlUtils} from "../utils";
2525
import {
2626
loadConfigFile,
2727
AuthType as SdkAuthType,
@@ -221,9 +221,7 @@ export class LoginWizard {
221221
});
222222

223223
if (pick.openDatabricksConfigFile) {
224-
await commands.executeCommand(
225-
"databricks.connection.openDatabricksConfigFile"
226-
);
224+
await FileUtils.openDatabricksConfigFile();
227225
return;
228226
}
229227

packages/databricks-vscode/src/extension.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import {PublicApi} from "@databricks/databricks-vscode-types";
2323
import {LoggerManager, Loggers} from "./logger";
2424
import {logging} from "@databricks/databricks-sdk";
2525
import {workspaceConfigs} from "./vscode-objs/WorkspaceConfigs";
26-
import {PackageJsonUtils, UtilsCommands} from "./utils";
26+
import {FileUtils, PackageJsonUtils, UtilsCommands} from "./utils";
2727
import {ConfigureAutocomplete} from "./language/ConfigureAutocomplete";
2828
import {
2929
WorkspaceFsAccessVerifier,
@@ -466,8 +466,7 @@ export async function activate(
466466
),
467467
telemetry.registerCommand(
468468
"databricks.connection.openDatabricksConfigFile",
469-
connectionCommands.openDatabricksConfigFileCommand(),
470-
connectionCommands
469+
FileUtils.openDatabricksConfigFile
471470
),
472471
telemetry.registerCommand(
473472
"databricks.connection.attachCluster",

packages/databricks-vscode/src/utils/fileUtils.ts

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import {TextDecoder} from "util";
2-
import {Uri, workspace} from "vscode";
2+
import {Uri, workspace, FileSystemError, window} from "vscode";
33
import {LocalUri} from "../sync/SyncDestination";
4-
import {ConnectionManager} from "../configuration/ConnectionManager";
4+
import type {ConnectionManager} from "../configuration/ConnectionManager";
5+
import {workspaceConfigs} from "../vscode-objs/WorkspaceConfigs";
56
import {exists} from "fs-extra";
67
import path from "path";
78
import {homedir} from "os";
@@ -48,3 +49,28 @@ export async function waitForDatabricksProject(
4849
export function getHomedir() {
4950
return process.env.HOME ?? homedir();
5051
}
52+
53+
export async function openDatabricksConfigFile() {
54+
const homeDir = getHomedir();
55+
let filePath =
56+
workspaceConfigs.databrickscfgLocation ??
57+
process.env.DATABRICKS_CONFIG_FILE ??
58+
path.join(homeDir, ".databrickscfg");
59+
60+
if (filePath.startsWith("~/")) {
61+
filePath = path.join(homeDir, filePath.slice(2));
62+
}
63+
const uri = Uri.file(path.normalize(filePath));
64+
try {
65+
await workspace.fs.stat(uri);
66+
} catch (e) {
67+
if (e instanceof FileSystemError && e.code === "FileNotFound") {
68+
await workspace.fs.writeFile(uri, Buffer.from(""));
69+
} else {
70+
throw e;
71+
}
72+
}
73+
74+
const doc = await workspace.openTextDocument(uri);
75+
await window.showTextDocument(doc);
76+
}

0 commit comments

Comments
 (0)