From 91a526b647874b46b3d654699405c922594d0807 Mon Sep 17 00:00:00 2001 From: daz Date: Wed, 17 Jul 2024 19:39:48 -0600 Subject: [PATCH] Refactor BuildResults --- sources/src/build-results.ts | 22 +++++++++++++++++-- .../caching/gradle-home-extry-extractor.ts | 2 +- sources/src/daemon-controller.ts | 7 +++--- sources/src/job-summary.ts | 8 +++---- 4 files changed, 28 insertions(+), 11 deletions(-) diff --git a/sources/src/build-results.ts b/sources/src/build-results.ts index 2813bd5..8be44f3 100644 --- a/sources/src/build-results.ts +++ b/sources/src/build-results.ts @@ -12,11 +12,29 @@ export interface BuildResult { get buildScanFailed(): boolean } -export function loadBuildResults(): BuildResult[] { - return getUnprocessedResults().map(filePath => { +export class BuildResults { + results: BuildResult[] + + constructor(results: BuildResult[]) { + this.results = results + } + + anyFailed(): boolean { + return this.results.some(result => result.buildFailed) + } + + uniqueGradleHomes(): string[] { + const allHomes = this.results.map(buildResult => buildResult.gradleHomeDir) + return Array.from(new Set(allHomes)) + } +} + +export function loadBuildResults(): BuildResults { + const results = getUnprocessedResults().map(filePath => { const content = fs.readFileSync(filePath, 'utf8') return JSON.parse(content) as BuildResult }) + return new BuildResults(results) } export function markBuildResultsProcessed(): void { diff --git a/sources/src/caching/gradle-home-extry-extractor.ts b/sources/src/caching/gradle-home-extry-extractor.ts index 4fd6847..2f4ecee 100644 --- a/sources/src/caching/gradle-home-extry-extractor.ts +++ b/sources/src/caching/gradle-home-extry-extractor.ts @@ -449,7 +449,7 @@ export class ConfigurationCacheEntryExtractor extends AbstractEntryExtractor { } private getConfigCacheDirectoriesWithAssociatedBuildResults(): Record { - return loadBuildResults().reduce( + return loadBuildResults().results.reduce( (acc, buildResult) => { // For each build result, find the config-cache dir const configCachePath = path.resolve(buildResult.rootProjectDir, '.gradle/configuration-cache') diff --git a/sources/src/daemon-controller.ts b/sources/src/daemon-controller.ts index a77c383..4df3340 100644 --- a/sources/src/daemon-controller.ts +++ b/sources/src/daemon-controller.ts @@ -2,14 +2,13 @@ import * as core from '@actions/core' import * as exec from '@actions/exec' import * as fs from 'fs' import * as path from 'path' -import {BuildResult} from './build-results' +import {BuildResults} from './build-results' export class DaemonController { private readonly gradleHomes - constructor(buildResults: BuildResult[]) { - const allHomes = buildResults.map(buildResult => buildResult.gradleHomeDir) - this.gradleHomes = Array.from(new Set(allHomes)) + constructor(buildResults: BuildResults) { + this.gradleHomes = buildResults.uniqueGradleHomes() } async stopAllDaemons(): Promise { diff --git a/sources/src/job-summary.ts b/sources/src/job-summary.ts index afaefff..628dbab 100644 --- a/sources/src/job-summary.ts +++ b/sources/src/job-summary.ts @@ -2,18 +2,18 @@ import * as core from '@actions/core' import * as github from '@actions/github' import {RequestError} from '@octokit/request-error' -import {BuildResult} from './build-results' +import {BuildResults, BuildResult} from './build-results' import {SummaryConfig, getActionId, getGithubToken} from './configuration' import {Deprecation, getDeprecations} from './deprecation-collector' export async function generateJobSummary( - buildResults: BuildResult[], + buildResults: BuildResults, cachingReport: string, config: SummaryConfig ): Promise { - const summaryTable = renderSummaryTable(buildResults) + const summaryTable = renderSummaryTable(buildResults.results) - const hasFailure = buildResults.some(result => result.buildFailed) + const hasFailure = buildResults.anyFailed() if (config.shouldGenerateJobSummary(hasFailure)) { core.info('Generating Job Summary')