diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 6f1da6a..fb4a055 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -37,7 +37,7 @@ jobs: - name: Setup Node version uses: actions/setup-node@v4 with: - node-version: 16 + node-version: 22 cache: 'npm' - name: 📦 Install dependencies diff --git a/src/extension.api.ts b/src/extension.api.ts new file mode 100644 index 0000000..876b1c3 --- /dev/null +++ b/src/extension.api.ts @@ -0,0 +1,5 @@ +import { BazelProjectView } from './types'; + +export interface BazelVscodeExtensionAPI { + readonly parseProjectFile: BazelProjectView; +} diff --git a/src/extension.ts b/src/extension.ts index d341f9d..8cff2c0 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -14,9 +14,11 @@ import { BazelLanguageServerTerminal, getBazelTerminal, } from './bazelLangaugeServerTerminal'; +import { getBazelProjectFile } from './bazelprojectparser'; import { BazelTaskManager } from './bazelTaskManager'; import { registerBuildifierFormatter } from './buildifier'; import { Commands, executeJavaLanguageServerCommand } from './commands'; +import { BazelVscodeExtensionAPI } from './extension.api'; import { registerLSClient } from './loggingTCPServer'; import { ProjectViewManager } from './projectViewManager'; import { BazelRunTargetProvider } from './provider/bazelRunTargetProvider'; @@ -29,7 +31,9 @@ import { const workspaceRoot = getWorkspaceRoot(); -export async function activate(context: ExtensionContext) { +export async function activate( + context: ExtensionContext +): Promise { // activates // LS processes current .eclipse/.bazelproject file // if it DNE create one @@ -137,9 +141,13 @@ export async function activate(context: ExtensionContext) { // always update the project view after the initial project load registerLSClient(); + + return Promise.resolve({ + parseProjectFile: await getBazelProjectFile(), + }); } -export function deactivate() { } +export function deactivate() {} function syncProjectView(): void { if (!isRedhatJavaReady()) { diff --git a/test/suite/extension.test.ts b/test/suite/extension.test.ts index deb3572..37ebcd9 100644 --- a/test/suite/extension.test.ts +++ b/test/suite/extension.test.ts @@ -2,10 +2,24 @@ import * as assert from 'assert'; import { setTimeout } from 'node:timers/promises'; import { env } from 'process'; import * as vscode from 'vscode'; +import { extensions } from 'vscode'; import { Commands } from '../../src/commands'; +import { BazelVscodeExtensionAPI } from '../../src/extension.api'; import { Jdtls } from './Jdtls'; suite('Java Language Extension - Standard', () => { + suiteSetup(async function () { + await extensions.getExtension('sfdc.bazel-vscode-java')?.activate(); + }); + + test('version should be correct', async function () { + const api: BazelVscodeExtensionAPI = extensions.getExtension( + 'sfdc.bazel-vscode-java' + )?.exports; + + assert.ok(api.parseProjectFile !== null); + }); + test('RedHat Java Extension should be present', () => { assert.ok(vscode.extensions.getExtension('redhat.java')); });