Skip to content

Commit 62e1e98

Browse files
authored
Pass on upstream tool and version to bricks sync (#432)
1 parent 08472b1 commit 62e1e98

File tree

5 files changed

+37
-16
lines changed

5 files changed

+37
-16
lines changed

packages/databricks-vscode/src/cli/BricksTasks.test.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {ProfileAuthProvider} from "../configuration/auth/AuthProvider";
66
import type {ConnectionManager} from "../configuration/ConnectionManager";
77
import {DatabricksWorkspace} from "../configuration/DatabricksWorkspace";
88
import {SyncDestination} from "../configuration/SyncDestination";
9+
import {PackageMetaData} from "../utils/packageJsonUtils";
910
import {LazyCustomSyncTerminal, SyncTask} from "./BricksTasks";
1011
import type {CliWrapper} from "./CliWrapper";
1112

@@ -23,6 +24,7 @@ describe(__filename, () => {
2324
instance(connection),
2425
instance(cli),
2526
"incremental",
27+
{} as PackageMetaData,
2628
() => {}
2729
);
2830

@@ -78,6 +80,7 @@ describe(__filename, () => {
7880
instance(connection),
7981
instance(cli),
8082
"full",
83+
{} as PackageMetaData,
8184
() => {}
8285
);
8386
});

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import {BricksSyncParser} from "./BricksSyncParser";
1717
import {withLogContext} from "@databricks/databricks-sdk/dist/logging";
1818
import {Loggers} from "../logger";
1919
import {Context, context} from "@databricks/databricks-sdk/dist/context";
20+
import {PackageMetaData} from "../utils/packageJsonUtils";
2021

2122
export const TaskSyncType = {
2223
syncFull: "sync-full",
@@ -34,6 +35,7 @@ export class SyncTask extends Task {
3435
connection: ConnectionManager,
3536
cli: CliWrapper,
3637
syncType: SyncType,
38+
packageMetadata: PackageMetaData,
3739
syncStateCallback: (state: SyncState) => void
3840
) {
3941
super(
@@ -49,6 +51,7 @@ export class SyncTask extends Task {
4951
connection,
5052
cli,
5153
syncType,
54+
packageMetadata,
5255
syncStateCallback
5356
);
5457
})
@@ -175,6 +178,7 @@ export class LazyCustomSyncTerminal extends CustomSyncTerminal {
175178
private connection: ConnectionManager,
176179
private cli: CliWrapper,
177180
private syncType: SyncType,
181+
private packageMetadata: PackageMetaData,
178182
syncStateCallback: (state: SyncState) => void
179183
) {
180184
super("", [], {}, syncStateCallback);
@@ -251,6 +255,8 @@ export class LazyCustomSyncTerminal extends CustomSyncTerminal {
251255
env: {
252256
/* eslint-disable @typescript-eslint/naming-convention */
253257
BRICKS_ROOT: workspacePath,
258+
BRICKS_UPSTREAM: "databricks-vscode",
259+
BRICKS_UPSTREAM_VERSION: this.packageMetadata.version,
254260
DATABRICKS_CONFIG_FILE: process.env.DATABRICKS_CONFIG_FILE,
255261
HOME: process.env.HOME,
256262
PATH: process.env.PATH,

packages/databricks-vscode/src/extension.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,9 @@ export async function activate(
5757
loggerManager.initLoggers();
5858
}
5959

60+
const packageMetadata = await PackageJsonUtils.getMetadata(context);
6061
NamedLogger.getOrCreate(Loggers.Extension).debug("Metadata", {
61-
metadata: await PackageJsonUtils.getMetadata(context),
62+
metadata: packageMetadata,
6263
});
6364

6465
const configureAutocomplete = new ConfigureAutocomplete(
@@ -117,7 +118,11 @@ export async function activate(
117118
)
118119
);
119120

120-
const synchronizer = new CodeSynchronizer(connectionManager, cli);
121+
const synchronizer = new CodeSynchronizer(
122+
connectionManager,
123+
cli,
124+
packageMetadata
125+
);
121126
const clusterModel = new ClusterModel(connectionManager);
122127

123128
const connectionCommands = new ConnectionCommands(

packages/databricks-vscode/src/sync/CodeSynchronizer.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {Disposable, Event, EventEmitter, TaskExecution, tasks} from "vscode";
22
import {SyncTask, TaskSyncType} from "../cli/BricksTasks";
33
import {CliWrapper} from "../cli/CliWrapper";
44
import {ConnectionManager} from "../configuration/ConnectionManager";
5+
import {PackageMetaData} from "../utils/packageJsonUtils";
56

67
export type SyncState =
78
| "IN_PROGRESS"
@@ -25,7 +26,8 @@ export class CodeSynchronizer implements Disposable {
2526

2627
constructor(
2728
private connection: ConnectionManager,
28-
private cli: CliWrapper
29+
private cli: CliWrapper,
30+
private packageMetadata: PackageMetaData
2931
) {
3032
this.disposables.push(
3133
this.connection.onDidChangeState(() => {
@@ -68,6 +70,7 @@ export class CodeSynchronizer implements Disposable {
6870
this.connection,
6971
this.cli,
7072
syncType,
73+
this.packageMetadata,
7174
(state: SyncState) => {
7275
this._state = state;
7376
this._onDidChangeStateEmitter.fire(state);

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

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,6 @@ interface ArchDetails {
99
arch?: ArchType;
1010
}
1111

12-
interface MetaData {
13-
packageName: string;
14-
version: string;
15-
bricksArch?: string;
16-
vsixArch?: string;
17-
commitSha?: string;
18-
}
19-
2012
// Possible values https://nodejs.org/api/process.html#processplatform
2113
export const nodeOsMap: Map<string, OsType> = new Map([
2214
["darwin", "macos"],
@@ -51,6 +43,14 @@ export const vsixArchMap: Map<string, ArchDetails> = new Map([
5143
["win32-ia32", {os: "windows", arch: "x86_32"}],
5244
]);
5345

46+
export interface PackageMetaData {
47+
packageName: string;
48+
version: string;
49+
bricksArch?: string;
50+
vsixArch?: string;
51+
commitSha?: string;
52+
}
53+
5454
function getNodeArchDetails(): ArchDetails {
5555
return {
5656
os: nodeOsMap.get(process.platform),
@@ -62,7 +62,9 @@ export function isEqual(l: ArchDetails, r: ArchDetails) {
6262
return l.os === r.os && l.arch === r.arch;
6363
}
6464

65-
export async function getMetadata(context: ExtensionContext) {
65+
export async function getMetadata(
66+
context: ExtensionContext
67+
): Promise<PackageMetaData> {
6668
const rawData = await fs.readFile(
6769
context.asAbsolutePath("./package.json"),
6870
{
@@ -82,7 +84,7 @@ export async function getMetadata(context: ExtensionContext) {
8284

8385
export function getCorrectVsixInstallString(
8486
nodeArch: ArchDetails,
85-
metaData: MetaData
87+
metaData: PackageMetaData
8688
): string | undefined {
8789
const correctVsix = Array.from(vsixArchMap.entries()).find((keyValue) =>
8890
isEqual(keyValue[1], nodeArch)
@@ -97,7 +99,7 @@ export function isCompatibleArchitecture(
9799
depName: string,
98100
depArch: ArchDetails | undefined,
99101
nodeArch: ArchDetails,
100-
metaData: MetaData
102+
metaData: PackageMetaData
101103
) {
102104
if (depArch && !isEqual(depArch, nodeArch)) {
103105
window.showErrorMessage(
@@ -119,13 +121,15 @@ export async function checkArchCompat(context: ExtensionContext) {
119121
return (
120122
isCompatibleArchitecture(
121123
"extension",
122-
vsixArchMap.get(metaData.vsixArch),
124+
metaData.vsixArch ? vsixArchMap.get(metaData.vsixArch) : undefined,
123125
nodeArch,
124126
metaData
125127
) &&
126128
isCompatibleArchitecture(
127129
"bricks-cli",
128-
bricksArchMap.get(metaData.bricksArch),
130+
metaData.bricksArch
131+
? bricksArchMap.get(metaData.bricksArch)
132+
: undefined,
129133
nodeArch,
130134
metaData
131135
)

0 commit comments

Comments
 (0)