11import * as path from 'path' ;
22
33import * as ghApiClient from './gh-api/gh-api-client' ;
4- import { CancellationToken , commands , EventEmitter , ExtensionContext , Uri , window } from 'vscode' ;
4+ import { CancellationToken , commands , env , EventEmitter , ExtensionContext , Uri , window } from 'vscode' ;
55import { DisposableObject } from '../pure/disposable-object' ;
66import { Credentials } from '../authentication' ;
77import { VariantAnalysisMonitor } from './variant-analysis-monitor' ;
@@ -28,6 +28,7 @@ import {
2828import PQueue from 'p-queue' ;
2929import { createTimestampFile , showAndLogErrorMessage , showAndLogInformationMessage } from '../helpers' ;
3030import * as fs from 'fs-extra' ;
31+ import * as os from 'os' ;
3132import { cancelVariantAnalysis } from './gh-api/gh-actions-api-client' ;
3233import { ProgressCallback , UserCancellationException } from '../commandRunner' ;
3334import { CodeQLCliServer } from '../cli' ;
@@ -388,6 +389,27 @@ export class VariantAnalysisManager extends DisposableObject implements VariantA
388389 await cancelVariantAnalysis ( credentials , variantAnalysis ) ;
389390 }
390391
392+ public async copyRepoListToClipboard ( variantAnalysisId : number ) {
393+ const variantAnalysis = this . variantAnalyses . get ( variantAnalysisId ) ;
394+ if ( ! variantAnalysis ) {
395+ throw new Error ( `No variant analysis with id: ${ variantAnalysisId } ` ) ;
396+ }
397+
398+ const fullNames = variantAnalysis . scannedRepos ?. filter ( a => a . resultCount && a . resultCount > 0 ) . map ( a => a . repository . fullName ) ;
399+ if ( ! fullNames || fullNames . length === 0 ) {
400+ return ;
401+ }
402+
403+ const text = [
404+ '"new-repo-list": [' ,
405+ ...fullNames . slice ( 0 , - 1 ) . map ( repo => ` "${ repo } ",` ) ,
406+ ` "${ fullNames [ fullNames . length - 1 ] } "` ,
407+ ']'
408+ ] ;
409+
410+ await env . clipboard . writeText ( text . join ( os . EOL ) ) ;
411+ }
412+
391413 private getRepoStatesStoragePath ( variantAnalysisId : number ) : string {
392414 return path . join (
393415 this . getVariantAnalysisStorageLocation ( variantAnalysisId ) ,
0 commit comments