11import * as ghApiClient from './gh-api/gh-api-client' ;
2- import { CancellationToken , EventEmitter , ExtensionContext } from 'vscode' ;
2+ import { CancellationToken , commands , EventEmitter , ExtensionContext , window } from 'vscode' ;
33import { DisposableObject } from '../pure/disposable-object' ;
44import { Logger } from '../logging' ;
55import { Credentials } from '../authentication' ;
@@ -10,7 +10,7 @@ import {
1010 VariantAnalysisScannedRepository as ApiVariantAnalysisScannedRepository
1111} from './gh-api/variant-analysis' ;
1212import {
13- VariantAnalysis ,
13+ VariantAnalysis , VariantAnalysisQueryLanguage ,
1414 VariantAnalysisScannedRepositoryDownloadStatus ,
1515 VariantAnalysisScannedRepositoryResult ,
1616 VariantAnalysisScannedRepositoryState
@@ -20,6 +20,8 @@ import { VariantAnalysisView } from './variant-analysis-view';
2020import { VariantAnalysisViewManager } from './variant-analysis-view-manager' ;
2121import { VariantAnalysisResultsManager } from './variant-analysis-results-manager' ;
2222import { CodeQLCliServer } from '../cli' ;
23+ import { getControllerRepo } from './run-remote-query' ;
24+ import { processUpdatedVariantAnalysis } from './variant-analysis-processor' ;
2325
2426export class VariantAnalysisManager extends DisposableObject implements VariantAnalysisViewManager < VariantAnalysisView > {
2527 private readonly _onVariantAnalysisAdded = this . push ( new EventEmitter < VariantAnalysis | undefined > ( ) ) ;
@@ -158,4 +160,36 @@ export class VariantAnalysisManager extends DisposableObject implements VariantA
158160 repoState . downloadStatus = VariantAnalysisScannedRepositoryDownloadStatus . Succeeded ;
159161 await this . onRepoStateUpdated ( variantAnalysisSummary . id , repoState ) ;
160162 }
163+
164+ public async promptOpenVariantAnalysis ( ) {
165+ const credentials = await Credentials . initialize ( this . ctx ) ;
166+ if ( ! credentials ) { throw Error ( 'Error authenticating with GitHub' ) ; }
167+
168+ const controllerRepo = await getControllerRepo ( credentials ) ;
169+
170+ const variantAnalysisIdString = await window . showInputBox ( {
171+ title : 'Enter the variant analysis ID' ,
172+ } ) ;
173+ if ( ! variantAnalysisIdString ) {
174+ return ;
175+ }
176+ const variantAnalysisId = parseInt ( variantAnalysisIdString , 10 ) ;
177+
178+ const variantAnalysisResponse = await ghApiClient . getVariantAnalysis ( credentials , controllerRepo . id , variantAnalysisId ) ;
179+
180+ const processedVariantAnalysis = processUpdatedVariantAnalysis ( {
181+ // We don't really know these values, so just fill in some placeholder values
182+ query : {
183+ name : `Variant analysis ${ variantAnalysisId } ` ,
184+ filePath : `variant_analysis_${ variantAnalysisId } .ql` ,
185+ language : variantAnalysisResponse . query_language as VariantAnalysisQueryLanguage ,
186+ } ,
187+ databases : { }
188+ } , variantAnalysisResponse ) ;
189+
190+ void commands . executeCommand ( 'codeQL.openVariantAnalysisView' , processedVariantAnalysis . id ) ;
191+ void commands . executeCommand ( 'codeQL.monitorVariantAnalysis' , processedVariantAnalysis ) ;
192+
193+ this . _onVariantAnalysisAdded . fire ( processedVariantAnalysis ) ;
194+ }
161195}
0 commit comments