From ef267f87bb5941a8db90ad8d7a60e1b85cdfdba5 Mon Sep 17 00:00:00 2001 From: Koen Vlaswinkel Date: Tue, 21 Mar 2023 16:22:08 +0100 Subject: [PATCH 1/3] Move packaging command registration to separate file --- extensions/ql-vscode/src/extension.ts | 29 +++----------------- extensions/ql-vscode/src/packaging.ts | 39 +++++++++++++++++++++++++-- 2 files changed, 41 insertions(+), 27 deletions(-) diff --git a/extensions/ql-vscode/src/extension.ts b/extensions/ql-vscode/src/extension.ts index 52e805f86a1..c304d99c245 100644 --- a/extensions/ql-vscode/src/extension.ts +++ b/extensions/ql-vscode/src/extension.ts @@ -103,10 +103,7 @@ import { withProgress, } from "./commandRunner"; import { CodeQlStatusBarHandler } from "./status-bar"; -import { - handleDownloadPacks, - handleInstallPackDependencies, -} from "./packaging"; +import { registerPackagingCommands } from "./packaging"; import { HistoryItemLabelProvider } from "./query-history/history-item-label-provider"; import { exportSelectedVariantAnalysisResults } from "./variant-analysis/export-results"; import { EvalLogViewer } from "./eval-log-viewer"; @@ -1295,27 +1292,9 @@ async function activateWithInstalledDistribution( }), ); - ctx.subscriptions.push( - commandRunnerWithProgress( - "codeQL.installPackDependencies", - async (progress: ProgressCallback) => - await handleInstallPackDependencies(cliServer, progress), - { - title: "Installing pack dependencies", - }, - ), - ); - - ctx.subscriptions.push( - commandRunnerWithProgress( - "codeQL.downloadPacks", - async (progress: ProgressCallback) => - await handleDownloadPacks(cliServer, progress), - { - title: "Downloading packs", - }, - ), - ); + registerPackagingCommands(ctx, { + cliServer, + }); ctx.subscriptions.push( commandRunner("codeQL.showLogs", async () => { diff --git a/extensions/ql-vscode/src/packaging.ts b/extensions/ql-vscode/src/packaging.ts index c17621c0941..43d9a99ada3 100644 --- a/extensions/ql-vscode/src/packaging.ts +++ b/extensions/ql-vscode/src/packaging.ts @@ -4,13 +4,48 @@ import { showAndLogExceptionWithTelemetry, showAndLogInformationMessage, } from "./helpers"; -import { QuickPickItem, window } from "vscode"; -import { ProgressCallback, UserCancellationException } from "./commandRunner"; +import { ExtensionContext, QuickPickItem, window } from "vscode"; +import { + commandRunnerWithProgress, + ProgressCallback, + UserCancellationException, +} from "./commandRunner"; import { extLogger } from "./common"; import { asError, getErrorStack } from "./pure/helpers-pure"; import { redactableError } from "./pure/errors"; import { PACKS_BY_QUERY_LANGUAGE } from "./common/query-language"; +type PackagingOptions = { + cliServer: CodeQLCliServer; +}; + +export function registerPackagingCommands( + ctx: ExtensionContext, + { cliServer }: PackagingOptions, +) { + ctx.subscriptions.push( + commandRunnerWithProgress( + "codeQL.installPackDependencies", + async (progress: ProgressCallback) => + await handleInstallPackDependencies(cliServer, progress), + { + title: "Installing pack dependencies", + }, + ), + ); + + ctx.subscriptions.push( + commandRunnerWithProgress( + "codeQL.downloadPacks", + async (progress: ProgressCallback) => + await handleDownloadPacks(cliServer, progress), + { + title: "Downloading packs", + }, + ), + ); +} + /** * Prompts user to choose packs to download, and downloads them. * From dfff7ae8de54ef4ee16dae236ca65438b92215ab Mon Sep 17 00:00:00 2001 From: Koen Vlaswinkel Date: Tue, 21 Mar 2023 16:47:00 +0100 Subject: [PATCH 2/3] Move packaging commands to withProgress --- extensions/ql-vscode/src/packaging.ts | 33 +++++++++++++++------------ 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/extensions/ql-vscode/src/packaging.ts b/extensions/ql-vscode/src/packaging.ts index 43d9a99ada3..355b539f804 100644 --- a/extensions/ql-vscode/src/packaging.ts +++ b/extensions/ql-vscode/src/packaging.ts @@ -6,9 +6,10 @@ import { } from "./helpers"; import { ExtensionContext, QuickPickItem, window } from "vscode"; import { - commandRunnerWithProgress, + commandRunner, ProgressCallback, UserCancellationException, + withProgress, } from "./commandRunner"; import { extLogger } from "./common"; import { asError, getErrorStack } from "./pure/helpers-pure"; @@ -24,24 +25,26 @@ export function registerPackagingCommands( { cliServer }: PackagingOptions, ) { ctx.subscriptions.push( - commandRunnerWithProgress( - "codeQL.installPackDependencies", - async (progress: ProgressCallback) => - await handleInstallPackDependencies(cliServer, progress), - { - title: "Installing pack dependencies", - }, + commandRunner("codeQL.installPackDependencies", async () => + withProgress( + async (progress: ProgressCallback) => + await handleInstallPackDependencies(cliServer, progress), + { + title: "Installing pack dependencies", + }, + ), ), ); ctx.subscriptions.push( - commandRunnerWithProgress( - "codeQL.downloadPacks", - async (progress: ProgressCallback) => - await handleDownloadPacks(cliServer, progress), - { - title: "Downloading packs", - }, + commandRunner("codeQL.downloadPacks", async () => + withProgress( + async (progress: ProgressCallback) => + await handleDownloadPacks(cliServer, progress), + { + title: "Downloading packs", + }, + ), ), ); } From 7c7a64ca5b6243aa5f86d3b3ad40c7e5b843d9c3 Mon Sep 17 00:00:00 2001 From: Koen Vlaswinkel Date: Tue, 21 Mar 2023 16:53:33 +0100 Subject: [PATCH 3/3] Convert packaging commands to typed commands --- extensions/ql-vscode/src/common/commands.ts | 8 ++++++- extensions/ql-vscode/src/extension.ts | 9 ++++---- extensions/ql-vscode/src/packaging.ts | 24 ++++++++------------- 3 files changed, 20 insertions(+), 21 deletions(-) diff --git a/extensions/ql-vscode/src/common/commands.ts b/extensions/ql-vscode/src/common/commands.ts index 00c68c472a6..d9863f43d05 100644 --- a/extensions/ql-vscode/src/common/commands.ts +++ b/extensions/ql-vscode/src/common/commands.ts @@ -108,10 +108,16 @@ export type DatabasePanelCommands = { "codeQLVariantAnalysisRepositories.removeItemContextMenu": SingleSelectionCommandFunction; }; +export type PackagingCommands = { + "codeQL.installPackDependencies": () => Promise; + "codeQL.downloadPacks": () => Promise; +}; + export type AllCommands = BaseCommands & QueryHistoryCommands & LocalDatabasesCommands & VariantAnalysisCommands & - DatabasePanelCommands; + DatabasePanelCommands & + PackagingCommands; export type AppCommandManager = CommandManager; diff --git a/extensions/ql-vscode/src/extension.ts b/extensions/ql-vscode/src/extension.ts index c304d99c245..181dd77abc3 100644 --- a/extensions/ql-vscode/src/extension.ts +++ b/extensions/ql-vscode/src/extension.ts @@ -103,7 +103,7 @@ import { withProgress, } from "./commandRunner"; import { CodeQlStatusBarHandler } from "./status-bar"; -import { registerPackagingCommands } from "./packaging"; +import { getPackagingCommands } from "./packaging"; import { HistoryItemLabelProvider } from "./query-history/history-item-label-provider"; import { exportSelectedVariantAnalysisResults } from "./variant-analysis/export-results"; import { EvalLogViewer } from "./eval-log-viewer"; @@ -1090,6 +1090,9 @@ async function activateWithInstalledDistribution( ...variantAnalysisManager.getCommands(), ...databaseUI.getCommands(), ...dbModule.getCommands(), + ...getPackagingCommands({ + cliServer, + }), }; for (const [commandName, command] of Object.entries(allCommands)) { @@ -1292,10 +1295,6 @@ async function activateWithInstalledDistribution( }), ); - registerPackagingCommands(ctx, { - cliServer, - }); - ctx.subscriptions.push( commandRunner("codeQL.showLogs", async () => { extLogger.show(); diff --git a/extensions/ql-vscode/src/packaging.ts b/extensions/ql-vscode/src/packaging.ts index 355b539f804..3a543173ef8 100644 --- a/extensions/ql-vscode/src/packaging.ts +++ b/extensions/ql-vscode/src/packaging.ts @@ -4,9 +4,8 @@ import { showAndLogExceptionWithTelemetry, showAndLogInformationMessage, } from "./helpers"; -import { ExtensionContext, QuickPickItem, window } from "vscode"; +import { QuickPickItem, window } from "vscode"; import { - commandRunner, ProgressCallback, UserCancellationException, withProgress, @@ -15,17 +14,17 @@ import { extLogger } from "./common"; import { asError, getErrorStack } from "./pure/helpers-pure"; import { redactableError } from "./pure/errors"; import { PACKS_BY_QUERY_LANGUAGE } from "./common/query-language"; +import { PackagingCommands } from "./common/commands"; type PackagingOptions = { cliServer: CodeQLCliServer; }; -export function registerPackagingCommands( - ctx: ExtensionContext, - { cliServer }: PackagingOptions, -) { - ctx.subscriptions.push( - commandRunner("codeQL.installPackDependencies", async () => +export function getPackagingCommands({ + cliServer, +}: PackagingOptions): PackagingCommands { + return { + "codeQL.installPackDependencies": async () => withProgress( async (progress: ProgressCallback) => await handleInstallPackDependencies(cliServer, progress), @@ -33,11 +32,7 @@ export function registerPackagingCommands( title: "Installing pack dependencies", }, ), - ), - ); - - ctx.subscriptions.push( - commandRunner("codeQL.downloadPacks", async () => + "codeQL.downloadPacks": async () => withProgress( async (progress: ProgressCallback) => await handleDownloadPacks(cliServer, progress), @@ -45,8 +40,7 @@ export function registerPackagingCommands( title: "Downloading packs", }, ), - ), - ); + }; } /**