Extract scheduleForDownload method

Before we make any changes, let's extract some of the monitor code into
smaller methods.

Since we have test coverage, we're able to do this quite comfortably.
This commit is contained in:
Elena Tanasoiu
2022-10-11 17:17:14 +01:00
parent 3b644fea7b
commit 0009114f7b

View File

@@ -5,7 +5,8 @@ import * as ghApiClient from './gh-api/gh-api-client';
import { VariantAnalysis, VariantAnalysisStatus } from './shared/variant-analysis';
import {
VariantAnalysis as VariantAnalysisApiResponse
VariantAnalysis as VariantAnalysisApiResponse,
VariantAnalysisScannedRepository
} from './gh-api/variant-analysis';
import { VariantAnalysisMonitorResult } from './shared/variant-analysis-monitor-result';
import { processFailureReason, processUpdatedVariantAnalysis } from './variant-analysis-processor';
@@ -78,6 +79,7 @@ export class VariantAnalysisMonitor extends DisposableObject {
if (variantAnalysisSummary.scanned_repositories) {
variantAnalysisSummary.scanned_repositories.forEach(scannedRepo => {
if (!scannedReposDownloaded.includes(scannedRepo.repository.id) && scannedRepo.analysis_status === 'succeeded') {
this.scheduleForDownload(scannedRepo, variantAnalysisSummary);
void commands.executeCommand('codeQL.autoDownloadVariantAnalysisResult', scannedRepo, variantAnalysisSummary);
scannedReposDownloaded.push(scannedRepo.repository.id);
}
@@ -94,6 +96,13 @@ export class VariantAnalysisMonitor extends DisposableObject {
return { status: 'CompletedSuccessfully', scannedReposDownloaded: scannedReposDownloaded };
}
private scheduleForDownload(
scannedRepo: VariantAnalysisScannedRepository,
variantAnalysisSummary: VariantAnalysisApiResponse
) {
void commands.executeCommand('codeQL.autoDownloadVariantAnalysisResult', scannedRepo, variantAnalysisSummary);
}
private async sleep(ms: number) {
return new Promise(resolve => setTimeout(resolve, ms));
}