Skip to content

Commit

Permalink
notify language client of updated packages from cli.ts
Browse files Browse the repository at this point in the history
  • Loading branch information
kaeluka committed Nov 28, 2024
1 parent 94434f4 commit 788bb4c
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 6 deletions.
32 changes: 29 additions & 3 deletions extensions/ql-vscode/src/codeql-cli/cli.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ import type { Log } from "sarif";
import { SemVer } from "semver";
import type { Readable } from "stream";
import tk from "tree-kill";
import type { CancellationToken, Disposable, Uri } from "vscode";
import type { CancellationToken, Disposable } from "vscode";
import { Uri } from "vscode";

import type {
BqrsInfo,
Expand Down Expand Up @@ -37,6 +38,11 @@ import { LOGGING_FLAGS } from "./cli-command";
import type { CliFeatures, VersionAndFeatures } from "./cli-version";
import { ExitCodeError, getCliError } from "./cli-errors";
import { UserCancellationException } from "../common/vscode/progress";
import type { LanguageClient } from "vscode-languageclient/node";
import {
DidChangeWatchedFilesNotification,
FileChangeType,
} from "vscode-languageclient/node";

/**
* The version of the SARIF format that we are using.
Expand Down Expand Up @@ -277,6 +283,7 @@ export class CodeQLCliServer implements Disposable {

constructor(
private readonly app: App,
private readonly languageClient: LanguageClient,
private distributionProvider: DistributionProvider,
private cliConfig: CliConfig,
public readonly logger: Logger,
Expand Down Expand Up @@ -1584,11 +1591,13 @@ export class CodeQLCliServer implements Disposable {
async packAdd(dir: string, queryLanguage: QueryLanguage) {
const args = ["--dir", dir];
args.push(`codeql/${queryLanguage}-all`);
return this.runCodeQlCliCommand(
const ret = await this.runCodeQlCliCommand(
["pack", "add"],
args,
`Adding and installing ${queryLanguage} pack dependency.`,
);
await this.notifyPackChanged(dir);
return ret;
}

/**
Expand Down Expand Up @@ -1628,11 +1637,13 @@ export class CodeQLCliServer implements Disposable {
...this.getAdditionalPacksArg(workspaceFolders),
);
}
return this.runJsonCodeQlCliCommandWithAuthentication(
const ret = await this.runJsonCodeQlCliCommandWithAuthentication(
["pack", "install"],
args,
"Installing pack dependencies",
);
await this.notifyPackChanged(dir);
return ret;
}

/**
Expand Down Expand Up @@ -1750,6 +1761,21 @@ export class CodeQLCliServer implements Disposable {
this._versionChangedListeners.push(listener);
}

private async notifyPackChanged(packDir: string) {
const packFilePath = join(packDir, "codeql-pack.yml");
await this.languageClient.sendNotification(
DidChangeWatchedFilesNotification.type,
{
changes: [
{
type: FileChangeType.Changed,
uri: Uri.file(packFilePath).toString(),
},
],
},
);
}

private async refreshVersion(): Promise<VersionAndFeatures> {
const distribution = await this.distributionProvider.getDistribution();
switch (distribution.kind) {
Expand Down
7 changes: 4 additions & 3 deletions extensions/ql-vscode/src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -748,9 +748,13 @@ async function activateWithInstalledDistribution(
);
ctx.subscriptions.push(qlConfigurationListener);

void extLogger.log("Initializing CodeQL language server.");
const languageClient = createLanguageClient(qlConfigurationListener);

void extLogger.log("Initializing CodeQL cli server...");
const cliServer = new CodeQLCliServer(
app,
languageClient,
distributionManager,
new CliConfigListener(),
extLogger,
Expand Down Expand Up @@ -961,9 +965,6 @@ async function activateWithInstalledDistribution(

ctx.subscriptions.push(tmpDirDisposal);

void extLogger.log("Initializing CodeQL language server.");
const languageClient = createLanguageClient(qlConfigurationListener);

const localQueries = new LocalQueries(
app,
qs,
Expand Down

0 comments on commit 788bb4c

Please sign in to comment.