Skip to content

Commit 3e66e7a

Browse files
committed
Merge remote-tracking branch 'origin/main' into koesie10/restart-typed-command
2 parents 2c8c7ce + 71831fe commit 3e66e7a

File tree

9 files changed

+542
-567
lines changed

9 files changed

+542
-567
lines changed

extensions/ql-vscode/src/commandRunner.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ export type ProgressTaskWithArgs<R> = (
8989
* @param args arguments passed to this task passed on from
9090
* `commands.registerCommand`.
9191
*/
92-
type NoProgressTask = (...args: any[]) => Promise<any>;
92+
export type NoProgressTask = (...args: any[]) => Promise<any>;
9393

9494
/**
9595
* This mediates between the kind of progress callbacks we want to

extensions/ql-vscode/src/common/commands.ts

Lines changed: 46 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { CommandManager } from "../packages/commands";
2-
import type { Uri } from "vscode";
2+
import type { Uri, Range } from "vscode";
33
import type { DbTreeViewItem } from "../databases/ui/db-tree-view-item";
44
import type { DatabaseItem } from "../local-databases";
55
import type { QueryHistoryInfo } from "../query-history/query-history-info";
@@ -31,6 +31,21 @@ export type BaseCommands = {
3131
"codeQL.restartQueryServer": () => Promise<void>;
3232
};
3333

34+
// Commands used for running local queries
35+
export type LocalQueryCommands = {
36+
"codeQL.runQuery": (uri?: Uri) => Promise<void>;
37+
"codeQL.runQueryContextEditor": (uri?: Uri) => Promise<void>;
38+
"codeQL.runQueryOnMultipleDatabases": (uri?: Uri) => Promise<void>;
39+
"codeQL.runQueryOnMultipleDatabasesContextEditor": (
40+
uri?: Uri,
41+
) => Promise<void>;
42+
"codeQL.runQueries": SelectionCommandFunction<Uri>;
43+
"codeQL.quickEval": (uri: Uri) => Promise<void>;
44+
"codeQL.quickEvalContextEditor": (uri: Uri) => Promise<void>;
45+
"codeQL.codeLensQuickEval": (uri: Uri, range: Range) => Promise<void>;
46+
"codeQL.quickQuery": () => Promise<void>;
47+
};
48+
3449
// Commands used for the query history panel
3550
export type QueryHistoryCommands = {
3651
// Commands in the "navigation" group
@@ -65,27 +80,42 @@ export type QueryHistoryCommands = {
6580

6681
// Commands used for the local databases panel
6782
export type LocalDatabasesCommands = {
68-
"codeQL.setCurrentDatabase": (uri: Uri) => Promise<void>;
69-
"codeQL.setDefaultTourDatabase": () => Promise<void>;
83+
// Command palette commands
84+
"codeQL.chooseDatabaseFolder": () => Promise<void>;
85+
"codeQL.chooseDatabaseArchive": () => Promise<void>;
86+
"codeQL.chooseDatabaseInternet": () => Promise<void>;
87+
"codeQL.chooseDatabaseGithub": () => Promise<void>;
7088
"codeQL.upgradeCurrentDatabase": () => Promise<void>;
7189
"codeQL.clearCache": () => Promise<void>;
7290

91+
// Explorer context menu
92+
"codeQL.setCurrentDatabase": (uri: Uri) => Promise<void>;
93+
94+
// Database panel view title commands
7395
"codeQLDatabases.chooseDatabaseFolder": () => Promise<void>;
7496
"codeQLDatabases.chooseDatabaseArchive": () => Promise<void>;
7597
"codeQLDatabases.chooseDatabaseInternet": () => Promise<void>;
7698
"codeQLDatabases.chooseDatabaseGithub": () => Promise<void>;
99+
"codeQLDatabases.sortByName": () => Promise<void>;
100+
"codeQLDatabases.sortByDateAdded": () => Promise<void>;
101+
102+
// Database panel context menu
77103
"codeQLDatabases.setCurrentDatabase": (
78104
databaseItem: DatabaseItem,
79105
) => Promise<void>;
80-
"codeQLDatabases.sortByName": () => Promise<void>;
81-
"codeQLDatabases.sortByDateAdded": () => Promise<void>;
82-
"codeQLDatabases.removeOrphanedDatabases": () => Promise<void>;
83106

107+
// Database panel selection commands
84108
"codeQLDatabases.removeDatabase": SelectionCommandFunction<DatabaseItem>;
85109
"codeQLDatabases.upgradeDatabase": SelectionCommandFunction<DatabaseItem>;
86110
"codeQLDatabases.renameDatabase": SelectionCommandFunction<DatabaseItem>;
87111
"codeQLDatabases.openDatabaseFolder": SelectionCommandFunction<DatabaseItem>;
88112
"codeQLDatabases.addDatabaseSource": SelectionCommandFunction<DatabaseItem>;
113+
114+
// Codespace template commands
115+
"codeQL.setDefaultTourDatabase": () => Promise<void>;
116+
117+
// Internal commands
118+
"codeQLDatabases.removeOrphanedDatabases": () => Promise<void>;
89119
};
90120

91121
// Commands tied to variant analysis
@@ -110,10 +140,19 @@ export type DatabasePanelCommands = {
110140
"codeQLVariantAnalysisRepositories.removeItemContextMenu": SingleSelectionCommandFunction<DbTreeViewItem>;
111141
};
112142

143+
export type EvalLogViewerCommands = {
144+
"codeQLEvalLogViewer.clear": () => Promise<void>;
145+
};
146+
113147
export type AllCommands = BaseCommands &
114148
QueryHistoryCommands &
115149
LocalDatabasesCommands &
116150
VariantAnalysisCommands &
117-
DatabasePanelCommands;
151+
DatabasePanelCommands &
152+
EvalLogViewerCommands;
118153

119154
export type AppCommandManager = CommandManager<AllCommands>;
155+
156+
// Separate command manager because it uses a different logger
157+
export type QueryServerCommands = LocalQueryCommands;
158+
export type QueryServerCommandManager = CommandManager<QueryServerCommands>;

extensions/ql-vscode/src/common/vscode/commands.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
import { commands } from "vscode";
2-
import { commandRunner } from "../../commandRunner";
2+
import { commandRunner, NoProgressTask } from "../../commandRunner";
33
import { CommandFunction, CommandManager } from "../../packages/commands";
4+
import { OutputChannelLogger } from "../logging";
45

56
/**
67
* Create a command manager for VSCode, wrapping the commandRunner
78
* and vscode.executeCommand.
89
*/
910
export function createVSCodeCommandManager<
1011
Commands extends Record<string, CommandFunction>,
11-
>(): CommandManager<Commands> {
12-
return new CommandManager(commandRunner, wrapExecuteCommand);
12+
>(outputLogger?: OutputChannelLogger): CommandManager<Commands> {
13+
return new CommandManager((commandId, task: NoProgressTask) => {
14+
return commandRunner(commandId, task, outputLogger);
15+
}, wrapExecuteCommand);
1316
}
1417

1518
/**

extensions/ql-vscode/src/common/vscode/vscode-app.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,23 @@ import { VSCodeCredentials } from "../../authentication";
33
import { Disposable } from "../../pure/disposable-object";
44
import { App, AppMode } from "../app";
55
import { AppEventEmitter } from "../events";
6-
import { extLogger, Logger } from "../logging";
6+
import { extLogger, Logger, queryServerLogger } from "../logging";
77
import { Memento } from "../memento";
88
import { VSCodeAppEventEmitter } from "./events";
9-
import { AppCommandManager } from "../commands";
9+
import { AppCommandManager, QueryServerCommandManager } from "../commands";
1010
import { createVSCodeCommandManager } from "./commands";
1111

1212
export class ExtensionApp implements App {
1313
public readonly credentials: VSCodeCredentials;
1414
public readonly commands: AppCommandManager;
15+
public readonly queryServerCommands: QueryServerCommandManager;
1516

1617
public constructor(
1718
public readonly extensionContext: vscode.ExtensionContext,
1819
) {
1920
this.credentials = new VSCodeCredentials();
2021
this.commands = createVSCodeCommandManager();
22+
this.queryServerCommands = createVSCodeCommandManager(queryServerLogger);
2123
extensionContext.subscriptions.push(this.commands);
2224
}
2325

extensions/ql-vscode/src/eval-log-viewer.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ import {
88
EventEmitter,
99
TreeItemCollapsibleState,
1010
} from "vscode";
11-
import { commandRunner } from "./commandRunner";
1211
import { DisposableObject } from "./pure/disposable-object";
1312
import { showAndLogExceptionWithTelemetry } from "./helpers";
1413
import { asError, getErrorMessage } from "./pure/helpers-pure";
1514
import { redactableError } from "./pure/errors";
15+
import { EvalLogViewerCommands } from "./common/commands";
1616

1717
export interface EvalLogTreeItem {
1818
label?: string;
@@ -80,11 +80,12 @@ export class EvalLogViewer extends DisposableObject {
8080

8181
this.push(this.treeView);
8282
this.push(this.treeDataProvider);
83-
this.push(
84-
commandRunner("codeQLEvalLogViewer.clear", async () => {
85-
this.clear();
86-
}),
87-
);
83+
}
84+
85+
public getCommands(): EvalLogViewerCommands {
86+
return {
87+
"codeQLEvalLogViewer.clear": async () => this.clear(),
88+
};
8889
}
8990

9091
private clear(): void {

0 commit comments

Comments
 (0)