Skip to content

Commit 610d40c

Browse files
committed
Add a command to open a database directory externally
1 parent adf6f66 commit 610d40c

File tree

2 files changed

+30
-8
lines changed

2 files changed

+30
-8
lines changed

extensions/ql-vscode/package.json

+9
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,10 @@
210210
"command": "codeQLDatabases.renameDatabase",
211211
"title": "Rename Database"
212212
},
213+
{
214+
"command": "codeQLDatabases.openDatabaseFolder",
215+
"title": "Show Database Directory"
216+
},
213217
{
214218
"command": "codeQL.checkForUpdatesToCLI",
215219
"title": "CodeQL: Check for CLI Updates"
@@ -284,6 +288,11 @@
284288
"group": "9_qlCommands",
285289
"when": "view == codeQLDatabases"
286290
},
291+
{
292+
"command": "codeQLDatabases.openDatabaseFolder",
293+
"group": "9_qlCommands",
294+
"when": "view == codeQLDatabases"
295+
},
287296
{
288297
"command": "codeQLQueryHistory.openQuery",
289298
"group": "9_qlCommands",

extensions/ql-vscode/src/databases-ui.ts

+21-8
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import * as path from 'path';
22
import { DisposableObject } from 'semmle-vscode-utils';
3-
import { commands, Event, EventEmitter, ExtensionContext, ProviderResult, TreeDataProvider, TreeItem, Uri, window } from 'vscode';
3+
import { commands, Event, EventEmitter, ExtensionContext, ProviderResult, TreeDataProvider, TreeItem, Uri, window, env } from 'vscode';
44
import * as cli from './cli';
55
import { DatabaseItem, DatabaseManager, getUpgradesDirectories } from './databases';
6-
import { getOnDiskWorkspaceFolders } from './helpers';
6+
import { getOnDiskWorkspaceFolders, showAndLogErrorMessage } from './helpers';
77
import { logger } from './logging';
88
import { clearCacheInDatabase, UserCancellationException } from './run-queries';
99
import * as qsClient from './queryserver-client';
@@ -145,6 +145,7 @@ export class DatabaseUI extends DisposableObject {
145145
ctx.subscriptions.push(commands.registerCommand('codeQLDatabases.removeDatabase', this.handleRemoveDatabase));
146146
ctx.subscriptions.push(commands.registerCommand('codeQLDatabases.upgradeDatabase', this.handleUpgradeDatabase));
147147
ctx.subscriptions.push(commands.registerCommand('codeQLDatabases.renameDatabase', this.handleRenameDatabase));
148+
ctx.subscriptions.push(commands.registerCommand('codeQLDatabases.openDatabaseFolder', this.handleOpenFolder));
148149
}
149150

150151
private handleMakeCurrentDatabase = async (databaseItem: DatabaseItem): Promise<void> => {
@@ -222,13 +223,25 @@ export class DatabaseUI extends DisposableObject {
222223
}
223224

224225
private handleRenameDatabase = async (databaseItem: DatabaseItem): Promise<void> => {
225-
const newName = await window.showInputBox({
226-
prompt: 'Choose new database name',
227-
value: databaseItem.name
228-
});
226+
try {
227+
const newName = await window.showInputBox({
228+
prompt: 'Choose new database name',
229+
value: databaseItem.name
230+
});
231+
232+
if (newName) {
233+
this.databaseManager.renameDatabaseItem(databaseItem, newName);
234+
}
235+
} catch (e) {
236+
showAndLogErrorMessage(e.message);
237+
}
238+
}
229239

230-
if (newName) {
231-
this.databaseManager.renameDatabaseItem(databaseItem, newName);
240+
private handleOpenFolder = async (databaseItem: DatabaseItem): Promise<void> => {
241+
try {
242+
await env.openExternal(databaseItem.databaseUri);
243+
} catch (e) {
244+
showAndLogErrorMessage(e.message);
232245
}
233246
}
234247

0 commit comments

Comments
 (0)