Refactor BuildResults

This commit is contained in:
daz 2024-07-17 19:39:48 -06:00
parent d92de28b80
commit 91a526b647
No known key found for this signature in database
4 changed files with 28 additions and 11 deletions

View File

@ -12,11 +12,29 @@ export interface BuildResult {
get buildScanFailed(): boolean get buildScanFailed(): boolean
} }
export function loadBuildResults(): BuildResult[] { export class BuildResults {
return getUnprocessedResults().map(filePath => { 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') const content = fs.readFileSync(filePath, 'utf8')
return JSON.parse(content) as BuildResult return JSON.parse(content) as BuildResult
}) })
return new BuildResults(results)
} }
export function markBuildResultsProcessed(): void { export function markBuildResultsProcessed(): void {

View File

@ -449,7 +449,7 @@ export class ConfigurationCacheEntryExtractor extends AbstractEntryExtractor {
} }
private getConfigCacheDirectoriesWithAssociatedBuildResults(): Record<string, BuildResult[]> { private getConfigCacheDirectoriesWithAssociatedBuildResults(): Record<string, BuildResult[]> {
return loadBuildResults().reduce( return loadBuildResults().results.reduce(
(acc, buildResult) => { (acc, buildResult) => {
// For each build result, find the config-cache dir // For each build result, find the config-cache dir
const configCachePath = path.resolve(buildResult.rootProjectDir, '.gradle/configuration-cache') const configCachePath = path.resolve(buildResult.rootProjectDir, '.gradle/configuration-cache')

View File

@ -2,14 +2,13 @@ import * as core from '@actions/core'
import * as exec from '@actions/exec' import * as exec from '@actions/exec'
import * as fs from 'fs' import * as fs from 'fs'
import * as path from 'path' import * as path from 'path'
import {BuildResult} from './build-results' import {BuildResults} from './build-results'
export class DaemonController { export class DaemonController {
private readonly gradleHomes private readonly gradleHomes
constructor(buildResults: BuildResult[]) { constructor(buildResults: BuildResults) {
const allHomes = buildResults.map(buildResult => buildResult.gradleHomeDir) this.gradleHomes = buildResults.uniqueGradleHomes()
this.gradleHomes = Array.from(new Set(allHomes))
} }
async stopAllDaemons(): Promise<void> { async stopAllDaemons(): Promise<void> {

View File

@ -2,18 +2,18 @@ import * as core from '@actions/core'
import * as github from '@actions/github' import * as github from '@actions/github'
import {RequestError} from '@octokit/request-error' import {RequestError} from '@octokit/request-error'
import {BuildResult} from './build-results' import {BuildResults, BuildResult} from './build-results'
import {SummaryConfig, getActionId, getGithubToken} from './configuration' import {SummaryConfig, getActionId, getGithubToken} from './configuration'
import {Deprecation, getDeprecations} from './deprecation-collector' import {Deprecation, getDeprecations} from './deprecation-collector'
export async function generateJobSummary( export async function generateJobSummary(
buildResults: BuildResult[], buildResults: BuildResults,
cachingReport: string, cachingReport: string,
config: SummaryConfig config: SummaryConfig
): Promise<void> { ): Promise<void> {
const summaryTable = renderSummaryTable(buildResults) const summaryTable = renderSummaryTable(buildResults.results)
const hasFailure = buildResults.some(result => result.buildFailed) const hasFailure = buildResults.anyFailed()
if (config.shouldGenerateJobSummary(hasFailure)) { if (config.shouldGenerateJobSummary(hasFailure)) {
core.info('Generating Job Summary') core.info('Generating Job Summary')