Skip to content

Commit 4c527a3

Browse files
authored
Merge pull request #1585 from github/koesie10/open-query-file
Add ability to open the query file
2 parents 908abb4 + a69ec03 commit 4c527a3

File tree

3 files changed

+33
-3
lines changed

3 files changed

+33
-3
lines changed

extensions/ql-vscode/src/pure/interface-types.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -464,6 +464,10 @@ export interface RequestRepositoryResultsMessage {
464464
repositoryFullName: string;
465465
}
466466

467+
export interface OpenQueryFileMessage {
468+
t: 'openQueryFile';
469+
}
470+
467471
export type ToVariantAnalysisMessage =
468472
| SetVariantAnalysisMessage
469473
| SetRepoResultsMessage
@@ -472,4 +476,5 @@ export type ToVariantAnalysisMessage =
472476
export type FromVariantAnalysisMessage =
473477
| ViewLoadedMsg
474478
| StopVariantAnalysisMessage
475-
| RequestRepositoryResultsMessage;
479+
| RequestRepositoryResultsMessage
480+
| OpenQueryFileMessage;

extensions/ql-vscode/src/remote-queries/variant-analysis-view.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { commands, ExtensionContext, ViewColumn } from 'vscode';
1+
import { commands, ExtensionContext, ViewColumn, window as Window, workspace } from 'vscode';
22
import { AbstractWebview, WebviewPanelConfig } from '../abstract-webview';
33
import { logger } from '../logging';
44
import { FromVariantAnalysisMessage, ToVariantAnalysisMessage } from '../pure/interface-types';
@@ -89,6 +89,9 @@ export class VariantAnalysisView extends AbstractWebview<ToVariantAnalysisMessag
8989
case 'requestRepositoryResults':
9090
void commands.executeCommand('codeQL.loadVariantAnalysisRepoResults', this.variantAnalysisId, msg.repositoryFullName);
9191
break;
92+
case 'openQueryFile':
93+
await this.openQueryFile();
94+
break;
9295
default:
9396
assertNever(msg);
9497
}
@@ -111,4 +114,20 @@ export class VariantAnalysisView extends AbstractWebview<ToVariantAnalysisMessag
111114
variantAnalysis,
112115
});
113116
}
117+
118+
private async openQueryFile(): Promise<void> {
119+
const variantAnalysis = await this.manager.getVariantAnalysis(this.variantAnalysisId);
120+
121+
if (!variantAnalysis) {
122+
void showAndLogWarningMessage('Could not open variant analysis query file');
123+
return;
124+
}
125+
126+
try {
127+
const textDocument = await workspace.openTextDocument(variantAnalysis.query.filePath);
128+
await Window.showTextDocument(textDocument, ViewColumn.One);
129+
} catch (error) {
130+
void showAndLogWarningMessage(`Could not open file: ${variantAnalysis.query.filePath}`);
131+
}
132+
}
114133
}

extensions/ql-vscode/src/view/variant-analysis/VariantAnalysis.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ type Props = {
1818
repoResults?: VariantAnalysisScannedRepositoryResult[];
1919
}
2020

21+
const openQueryFile = () => {
22+
vscode.postMessage({
23+
t: 'openQueryFile',
24+
});
25+
};
26+
2127
export function VariantAnalysis({
2228
variantAnalysis: initialVariantAnalysis,
2329
repoStates: initialRepoStates = [],
@@ -68,7 +74,7 @@ export function VariantAnalysis({
6874
<>
6975
<VariantAnalysisHeader
7076
variantAnalysis={variantAnalysis}
71-
onOpenQueryFileClick={() => console.log('Open query')}
77+
onOpenQueryFileClick={openQueryFile}
7278
onViewQueryTextClick={() => console.log('View query')}
7379
onStopQueryClick={() => console.log('Stop query')}
7480
onCopyRepositoryListClick={() => console.log('Copy repository list')}

0 commit comments

Comments
 (0)