From ac2f4475c0470d1fb34a9623a7f9133511221c70 Mon Sep 17 00:00:00 2001 From: Koen Vlaswinkel Date: Tue, 21 Mar 2023 14:40:04 +0100 Subject: [PATCH 1/6] Group local database commands by type --- extensions/ql-vscode/src/common/commands.ts | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/extensions/ql-vscode/src/common/commands.ts b/extensions/ql-vscode/src/common/commands.ts index 00c68c472..4cd660c39 100644 --- a/extensions/ql-vscode/src/common/commands.ts +++ b/extensions/ql-vscode/src/common/commands.ts @@ -63,27 +63,38 @@ export type QueryHistoryCommands = { // Commands used for the local databases panel export type LocalDatabasesCommands = { - "codeQL.setCurrentDatabase": (uri: Uri) => Promise; - "codeQL.setDefaultTourDatabase": () => Promise; + // Command palette commands "codeQL.upgradeCurrentDatabase": () => Promise; "codeQL.clearCache": () => Promise; + // Explorer context menu + "codeQL.setCurrentDatabase": (uri: Uri) => Promise; + + // Database panel view title commands "codeQLDatabases.chooseDatabaseFolder": () => Promise; "codeQLDatabases.chooseDatabaseArchive": () => Promise; "codeQLDatabases.chooseDatabaseInternet": () => Promise; "codeQLDatabases.chooseDatabaseGithub": () => Promise; + "codeQLDatabases.sortByName": () => Promise; + "codeQLDatabases.sortByDateAdded": () => Promise; + + // Database panel context menu "codeQLDatabases.setCurrentDatabase": ( databaseItem: DatabaseItem, ) => Promise; - "codeQLDatabases.sortByName": () => Promise; - "codeQLDatabases.sortByDateAdded": () => Promise; - "codeQLDatabases.removeOrphanedDatabases": () => Promise; + // Database panel selection commands "codeQLDatabases.removeDatabase": SelectionCommandFunction; "codeQLDatabases.upgradeDatabase": SelectionCommandFunction; "codeQLDatabases.renameDatabase": SelectionCommandFunction; "codeQLDatabases.openDatabaseFolder": SelectionCommandFunction; "codeQLDatabases.addDatabaseSource": SelectionCommandFunction; + + // Codespace template commands + "codeQL.setDefaultTourDatabase": () => Promise; + + // Internal commands + "codeQLDatabases.removeOrphanedDatabases": () => Promise; }; // Commands tied to variant analysis From 32b6ad53cf5e7b028e84ba4f4fdc3512231c684a Mon Sep 17 00:00:00 2001 From: Koen Vlaswinkel Date: Tue, 21 Mar 2023 14:44:46 +0100 Subject: [PATCH 2/6] Move codeQL.chooseDatabaseFolder command --- extensions/ql-vscode/src/common/commands.ts | 1 + extensions/ql-vscode/src/extension.ts | 10 ---------- extensions/ql-vscode/src/local-databases-ui.ts | 13 +++++++++++++ 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/extensions/ql-vscode/src/common/commands.ts b/extensions/ql-vscode/src/common/commands.ts index 4cd660c39..aa2ae016b 100644 --- a/extensions/ql-vscode/src/common/commands.ts +++ b/extensions/ql-vscode/src/common/commands.ts @@ -64,6 +64,7 @@ export type QueryHistoryCommands = { // Commands used for the local databases panel export type LocalDatabasesCommands = { // Command palette commands + "codeQL.chooseDatabaseFolder": () => Promise; "codeQL.upgradeCurrentDatabase": () => Promise; "codeQL.clearCache": () => Promise; diff --git a/extensions/ql-vscode/src/extension.ts b/extensions/ql-vscode/src/extension.ts index 52e805f86..03a5cf061 100644 --- a/extensions/ql-vscode/src/extension.ts +++ b/extensions/ql-vscode/src/extension.ts @@ -1220,16 +1220,6 @@ async function activateWithInstalledDistribution( ), ); - ctx.subscriptions.push( - commandRunnerWithProgress( - "codeQL.chooseDatabaseFolder", - (progress: ProgressCallback, token: CancellationToken) => - databaseUI.chooseDatabaseFolder(progress, token), - { - title: "Choose a Database from a Folder", - }, - ), - ); ctx.subscriptions.push( commandRunnerWithProgress( "codeQL.chooseDatabaseArchive", diff --git a/extensions/ql-vscode/src/local-databases-ui.ts b/extensions/ql-vscode/src/local-databases-ui.ts index 95b98d4fe..5cc11c0d9 100644 --- a/extensions/ql-vscode/src/local-databases-ui.ts +++ b/extensions/ql-vscode/src/local-databases-ui.ts @@ -208,6 +208,8 @@ export class DatabaseUI extends DisposableObject { public getCommands(): LocalDatabasesCommands { return { + "codeQL.chooseDatabaseFolder": + this.handleChooseDatabaseFolderFromPalette.bind(this), "codeQL.setCurrentDatabase": this.handleSetCurrentDatabase.bind(this), "codeQL.setDefaultTourDatabase": this.handleSetDefaultTourDatabase.bind(this), @@ -268,6 +270,17 @@ export class DatabaseUI extends DisposableObject { ); } + private async handleChooseDatabaseFolderFromPalette(): Promise { + return withProgress( + async (progress, token) => { + await this.chooseDatabaseFolder(progress, token); + }, + { + title: "Choose a Database from a Folder", + }, + ); + } + private async handleSetDefaultTourDatabase(): Promise { return withProgress( async (progress, token) => { From 71f22b9a7a699c55e4dee82d55db376584aa2040 Mon Sep 17 00:00:00 2001 From: Koen Vlaswinkel Date: Tue, 21 Mar 2023 14:45:54 +0100 Subject: [PATCH 3/6] Move codeQL.chooseDatabaseArchive command --- extensions/ql-vscode/src/common/commands.ts | 1 + extensions/ql-vscode/src/extension.ts | 10 ---------- extensions/ql-vscode/src/local-databases-ui.ts | 13 +++++++++++++ 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/extensions/ql-vscode/src/common/commands.ts b/extensions/ql-vscode/src/common/commands.ts index aa2ae016b..97e95be15 100644 --- a/extensions/ql-vscode/src/common/commands.ts +++ b/extensions/ql-vscode/src/common/commands.ts @@ -65,6 +65,7 @@ export type QueryHistoryCommands = { export type LocalDatabasesCommands = { // Command palette commands "codeQL.chooseDatabaseFolder": () => Promise; + "codeQL.chooseDatabaseArchive": () => Promise; "codeQL.upgradeCurrentDatabase": () => Promise; "codeQL.clearCache": () => Promise; diff --git a/extensions/ql-vscode/src/extension.ts b/extensions/ql-vscode/src/extension.ts index 03a5cf061..d17662837 100644 --- a/extensions/ql-vscode/src/extension.ts +++ b/extensions/ql-vscode/src/extension.ts @@ -1220,16 +1220,6 @@ async function activateWithInstalledDistribution( ), ); - ctx.subscriptions.push( - commandRunnerWithProgress( - "codeQL.chooseDatabaseArchive", - (progress: ProgressCallback, token: CancellationToken) => - databaseUI.chooseDatabaseArchive(progress, token), - { - title: "Choose a Database from an Archive", - }, - ), - ); ctx.subscriptions.push( commandRunnerWithProgress( "codeQL.chooseDatabaseGithub", diff --git a/extensions/ql-vscode/src/local-databases-ui.ts b/extensions/ql-vscode/src/local-databases-ui.ts index 5cc11c0d9..e84d6e6df 100644 --- a/extensions/ql-vscode/src/local-databases-ui.ts +++ b/extensions/ql-vscode/src/local-databases-ui.ts @@ -210,6 +210,8 @@ export class DatabaseUI extends DisposableObject { return { "codeQL.chooseDatabaseFolder": this.handleChooseDatabaseFolderFromPalette.bind(this), + "codeQL.chooseDatabaseArchive": + this.handleChooseDatabaseArchiveFromPalette.bind(this), "codeQL.setCurrentDatabase": this.handleSetCurrentDatabase.bind(this), "codeQL.setDefaultTourDatabase": this.handleSetDefaultTourDatabase.bind(this), @@ -431,6 +433,17 @@ export class DatabaseUI extends DisposableObject { ); } + private async handleChooseDatabaseArchiveFromPalette(): Promise { + return withProgress( + async (progress, token) => { + await this.chooseDatabaseArchive(progress, token); + }, + { + title: "Choose a Database from an Archive", + }, + ); + } + public async chooseDatabaseInternet( progress: ProgressCallback, token: CancellationToken, From 15d30d534221a8fe93a2b85b5a3a89a6c51a1145 Mon Sep 17 00:00:00 2001 From: Koen Vlaswinkel Date: Tue, 21 Mar 2023 14:47:26 +0100 Subject: [PATCH 4/6] Move codeQL.chooseDatabaseInternet command --- extensions/ql-vscode/src/common/commands.ts | 1 + extensions/ql-vscode/src/extension.ts | 11 ----------- extensions/ql-vscode/src/local-databases-ui.ts | 2 ++ 3 files changed, 3 insertions(+), 11 deletions(-) diff --git a/extensions/ql-vscode/src/common/commands.ts b/extensions/ql-vscode/src/common/commands.ts index 97e95be15..2aa5adbd4 100644 --- a/extensions/ql-vscode/src/common/commands.ts +++ b/extensions/ql-vscode/src/common/commands.ts @@ -66,6 +66,7 @@ export type LocalDatabasesCommands = { // Command palette commands "codeQL.chooseDatabaseFolder": () => Promise; "codeQL.chooseDatabaseArchive": () => Promise; + "codeQL.chooseDatabaseInternet": () => Promise; "codeQL.upgradeCurrentDatabase": () => Promise; "codeQL.clearCache": () => Promise; diff --git a/extensions/ql-vscode/src/extension.ts b/extensions/ql-vscode/src/extension.ts index d17662837..a57ad17dd 100644 --- a/extensions/ql-vscode/src/extension.ts +++ b/extensions/ql-vscode/src/extension.ts @@ -1231,17 +1231,6 @@ async function activateWithInstalledDistribution( }, ), ); - ctx.subscriptions.push( - commandRunnerWithProgress( - "codeQL.chooseDatabaseInternet", - (progress: ProgressCallback, token: CancellationToken) => - databaseUI.chooseDatabaseInternet(progress, token), - - { - title: "Adding database from URL", - }, - ), - ); ctx.subscriptions.push( commandRunner("codeQL.copyVersion", async () => { diff --git a/extensions/ql-vscode/src/local-databases-ui.ts b/extensions/ql-vscode/src/local-databases-ui.ts index e84d6e6df..befc481b5 100644 --- a/extensions/ql-vscode/src/local-databases-ui.ts +++ b/extensions/ql-vscode/src/local-databases-ui.ts @@ -212,6 +212,8 @@ export class DatabaseUI extends DisposableObject { this.handleChooseDatabaseFolderFromPalette.bind(this), "codeQL.chooseDatabaseArchive": this.handleChooseDatabaseArchiveFromPalette.bind(this), + "codeQL.chooseDatabaseInternet": + this.handleChooseDatabaseInternet.bind(this), "codeQL.setCurrentDatabase": this.handleSetCurrentDatabase.bind(this), "codeQL.setDefaultTourDatabase": this.handleSetDefaultTourDatabase.bind(this), From 7ab986fabe0c9c51f436497262d75c55240f8885 Mon Sep 17 00:00:00 2001 From: Koen Vlaswinkel Date: Tue, 21 Mar 2023 14:48:14 +0100 Subject: [PATCH 5/6] Move codeQL.chooseDatabaseGithub command --- extensions/ql-vscode/src/common/commands.ts | 1 + extensions/ql-vscode/src/extension.ts | 12 ------------ extensions/ql-vscode/src/local-databases-ui.ts | 1 + 3 files changed, 2 insertions(+), 12 deletions(-) diff --git a/extensions/ql-vscode/src/common/commands.ts b/extensions/ql-vscode/src/common/commands.ts index 2aa5adbd4..f7971ccdb 100644 --- a/extensions/ql-vscode/src/common/commands.ts +++ b/extensions/ql-vscode/src/common/commands.ts @@ -67,6 +67,7 @@ export type LocalDatabasesCommands = { "codeQL.chooseDatabaseFolder": () => Promise; "codeQL.chooseDatabaseArchive": () => Promise; "codeQL.chooseDatabaseInternet": () => Promise; + "codeQL.chooseDatabaseGithub": () => Promise; "codeQL.upgradeCurrentDatabase": () => Promise; "codeQL.clearCache": () => Promise; diff --git a/extensions/ql-vscode/src/extension.ts b/extensions/ql-vscode/src/extension.ts index a57ad17dd..52abf5e7a 100644 --- a/extensions/ql-vscode/src/extension.ts +++ b/extensions/ql-vscode/src/extension.ts @@ -1220,18 +1220,6 @@ async function activateWithInstalledDistribution( ), ); - ctx.subscriptions.push( - commandRunnerWithProgress( - "codeQL.chooseDatabaseGithub", - async (progress: ProgressCallback, token: CancellationToken) => { - await databaseUI.chooseDatabaseGithub(progress, token); - }, - { - title: "Adding database from GitHub", - }, - ), - ); - ctx.subscriptions.push( commandRunner("codeQL.copyVersion", async () => { const text = `CodeQL extension version: ${ diff --git a/extensions/ql-vscode/src/local-databases-ui.ts b/extensions/ql-vscode/src/local-databases-ui.ts index befc481b5..fc6b0eff6 100644 --- a/extensions/ql-vscode/src/local-databases-ui.ts +++ b/extensions/ql-vscode/src/local-databases-ui.ts @@ -214,6 +214,7 @@ export class DatabaseUI extends DisposableObject { this.handleChooseDatabaseArchiveFromPalette.bind(this), "codeQL.chooseDatabaseInternet": this.handleChooseDatabaseInternet.bind(this), + "codeQL.chooseDatabaseGithub": this.handleChooseDatabaseGithub.bind(this), "codeQL.setCurrentDatabase": this.handleSetCurrentDatabase.bind(this), "codeQL.setDefaultTourDatabase": this.handleSetDefaultTourDatabase.bind(this), From bed56ef64883cddc533f327e0aedfc1b09ce5b77 Mon Sep 17 00:00:00 2001 From: Koen Vlaswinkel Date: Tue, 21 Mar 2023 14:50:24 +0100 Subject: [PATCH 6/6] Make public methods private in local databases UI Some of the methods in the `DatabaseUI` were public because they were used in the `extension.ts` file. We have moved these method calls into this file, so they do not need to be public anymore. We can also get rid of the separation between some of these methods, so I've moved them into the function that calls them. --- .../ql-vscode/src/local-databases-ui.ts | 52 +++++++------------ 1 file changed, 19 insertions(+), 33 deletions(-) diff --git a/extensions/ql-vscode/src/local-databases-ui.ts b/extensions/ql-vscode/src/local-databases-ui.ts index fc6b0eff6..c12081221 100644 --- a/extensions/ql-vscode/src/local-databases-ui.ts +++ b/extensions/ql-vscode/src/local-databases-ui.ts @@ -249,7 +249,7 @@ export class DatabaseUI extends DisposableObject { await this.databaseManager.setCurrentDatabaseItem(databaseItem); } - public async chooseDatabaseFolder( + private async chooseDatabaseFolder( progress: ProgressCallback, token: CancellationToken, ): Promise { @@ -410,7 +410,7 @@ export class DatabaseUI extends DisposableObject { } } - public async chooseDatabaseArchive( + private async chooseDatabaseArchive( progress: ProgressCallback, token: CancellationToken, ): Promise { @@ -447,23 +447,16 @@ export class DatabaseUI extends DisposableObject { ); } - public async chooseDatabaseInternet( - progress: ProgressCallback, - token: CancellationToken, - ): Promise { - return await promptImportInternetDatabase( - this.databaseManager, - this.storagePath, - progress, - token, - this.queryServer?.cliServer, - ); - } - private async handleChooseDatabaseInternet(): Promise { return withProgress( async (progress, token) => { - await this.chooseDatabaseInternet(progress, token); + await promptImportInternetDatabase( + this.databaseManager, + this.storagePath, + progress, + token, + this.queryServer?.cliServer, + ); }, { title: "Adding database from URL", @@ -471,26 +464,19 @@ export class DatabaseUI extends DisposableObject { ); } - public async chooseDatabaseGithub( - progress: ProgressCallback, - token: CancellationToken, - ): Promise { - const credentials = isCanary() ? this.app.credentials : undefined; - - return await promptImportGithubDatabase( - this.databaseManager, - this.storagePath, - credentials, - progress, - token, - this.queryServer?.cliServer, - ); - } - private async handleChooseDatabaseGithub(): Promise { return withProgress( async (progress, token) => { - await this.chooseDatabaseGithub(progress, token); + const credentials = isCanary() ? this.app.credentials : undefined; + + await promptImportGithubDatabase( + this.databaseManager, + this.storagePath, + credentials, + progress, + token, + this.queryServer?.cliServer, + ); }, { title: "Adding database from GitHub",