From fd7013f7543d0aa00bd7155696f95a083db603a2 Mon Sep 17 00:00:00 2001 From: Koen Vlaswinkel Date: Wed, 22 Mar 2023 16:04:49 +0100 Subject: [PATCH] Convert mock API server commands to typed commands --- extensions/ql-vscode/src/common/commands.ts | 11 +++++- extensions/ql-vscode/src/extension.ts | 37 ++----------------- .../src/mocks/vscode-mock-gh-api-server.ts | 14 +++++++ 3 files changed, 28 insertions(+), 34 deletions(-) diff --git a/extensions/ql-vscode/src/common/commands.ts b/extensions/ql-vscode/src/common/commands.ts index 03e4d41a163..e3a610ab11c 100644 --- a/extensions/ql-vscode/src/common/commands.ts +++ b/extensions/ql-vscode/src/common/commands.ts @@ -204,6 +204,14 @@ export type SummaryLanguageSupportCommands = { "codeQL.gotoQL": () => Promise; }; +export type MockGitHubApiServerCommands = { + "codeQL.mockGitHubApiServer.startRecording": () => Promise; + "codeQL.mockGitHubApiServer.saveScenario": () => Promise; + "codeQL.mockGitHubApiServer.cancelRecording": () => Promise; + "codeQL.mockGitHubApiServer.loadScenario": () => Promise; + "codeQL.mockGitHubApiServer.unloadScenario": () => Promise; +}; + export type AllCommands = BaseCommands & ResultsViewCommands & QueryHistoryCommands & @@ -214,7 +222,8 @@ export type AllCommands = BaseCommands & AstViewerCommands & PackagingCommands & EvalLogViewerCommands & - SummaryLanguageSupportCommands; + SummaryLanguageSupportCommands & + MockGitHubApiServerCommands; export type AppCommandManager = CommandManager; diff --git a/extensions/ql-vscode/src/extension.ts b/extensions/ql-vscode/src/extension.ts index 812ddc5dcfb..bc966c99b4e 100644 --- a/extensions/ql-vscode/src/extension.ts +++ b/extensions/ql-vscode/src/extension.ts @@ -822,6 +822,9 @@ async function activateWithInstalledDistribution( const summaryLanguageSupport = new SummaryLanguageSupport(); ctx.subscriptions.push(summaryLanguageSupport); + const mockServer = new VSCodeMockGitHubApiServer(ctx); + ctx.subscriptions.push(mockServer); + void extLogger.log("Registering top-level command palette commands."); const allCommands: AllCommands = { @@ -847,6 +850,7 @@ async function activateWithInstalledDistribution( }), ...evalLogViewer.getCommands(), ...summaryLanguageSupport.getCommands(), + ...mockServer.getCommands(), }; for (const [commandName, command] of Object.entries(allCommands)) { @@ -973,39 +977,6 @@ async function activateWithInstalledDistribution( ), ); - const mockServer = new VSCodeMockGitHubApiServer(ctx); - ctx.subscriptions.push(mockServer); - ctx.subscriptions.push( - commandRunner( - "codeQL.mockGitHubApiServer.startRecording", - async () => await mockServer.startRecording(), - ), - ); - ctx.subscriptions.push( - commandRunner( - "codeQL.mockGitHubApiServer.saveScenario", - async () => await mockServer.saveScenario(), - ), - ); - ctx.subscriptions.push( - commandRunner( - "codeQL.mockGitHubApiServer.cancelRecording", - async () => await mockServer.cancelRecording(), - ), - ); - ctx.subscriptions.push( - commandRunner( - "codeQL.mockGitHubApiServer.loadScenario", - async () => await mockServer.loadScenario(), - ), - ); - ctx.subscriptions.push( - commandRunner( - "codeQL.mockGitHubApiServer.unloadScenario", - async () => await mockServer.unloadScenario(), - ), - ); - await commands.executeCommand("codeQLDatabases.removeOrphanedDatabases"); void extLogger.log("Reading query history"); diff --git a/extensions/ql-vscode/src/mocks/vscode-mock-gh-api-server.ts b/extensions/ql-vscode/src/mocks/vscode-mock-gh-api-server.ts index fbe43c2c94f..50c821b5645 100644 --- a/extensions/ql-vscode/src/mocks/vscode-mock-gh-api-server.ts +++ b/extensions/ql-vscode/src/mocks/vscode-mock-gh-api-server.ts @@ -15,6 +15,7 @@ import { } from "../config"; import { DisposableObject } from "../pure/disposable-object"; import { MockGitHubApiServer } from "./mock-gh-api-server"; +import { MockGitHubApiServerCommands } from "../common/commands"; /** * "Interface" to the mock GitHub API server which implements VSCode interactions, such as @@ -34,6 +35,19 @@ export class VSCodeMockGitHubApiServer extends DisposableObject { this.setupConfigListener(); } + public getCommands(): MockGitHubApiServerCommands { + return { + "codeQL.mockGitHubApiServer.startRecording": + this.startRecording.bind(this), + "codeQL.mockGitHubApiServer.saveScenario": this.saveScenario.bind(this), + "codeQL.mockGitHubApiServer.cancelRecording": + this.cancelRecording.bind(this), + "codeQL.mockGitHubApiServer.loadScenario": this.loadScenario.bind(this), + "codeQL.mockGitHubApiServer.unloadScenario": + this.unloadScenario.bind(this), + }; + } + public async startServer(): Promise { this.server.startServer(); }