diff --git a/sources/src/caching/gradle-user-home-utils.ts b/sources/src/caching/gradle-user-home-utils.ts index 4d380336..0bc89aea 100644 --- a/sources/src/caching/gradle-user-home-utils.ts +++ b/sources/src/caching/gradle-user-home-utils.ts @@ -13,34 +13,37 @@ export function readResourceFileAsString(...paths: string[]): string { * @VisibleForTesting */ export function getPredefinedToolchains(): string | null { - const javaHomeEnvs: string[] = [] - for (const javaHomeEnvsKey in process.env) { - if (javaHomeEnvsKey.startsWith('JAVA_HOME_')) { - javaHomeEnvs.push(javaHomeEnvsKey) - } - } + // Get the version and path for each JAVA_HOME env var + const javaHomeEnvs = Object.entries(process.env) + .filter(([key]) => key.startsWith('JAVA_HOME_') && process.env[key]) + .map(([key, value]) => ({ + jdkVersion: key.match(/JAVA_HOME_(\d+)_/)?.[1] ?? null, + jdkPath: value as string + })) + .filter(env => env.jdkVersion !== null) + if (javaHomeEnvs.length === 0) { return null } + // language=XML - let toolchainsXml = ` + return ` -` - for (const javaHomeEnv of javaHomeEnvs) { - const version = javaHomeEnv.match(/JAVA_HOME_(\d+)_/)?.[1]! - toolchainsXml += ` +${javaHomeEnvs + .map( + ({jdkVersion, jdkPath}) => ` jdk - ${version} + ${jdkVersion} - \${env.${javaHomeEnv}} + ${jdkPath} - \n` - } - toolchainsXml += `\n` - return toolchainsXml + ` + ) + .join('\n')} +\n` } export function mergeToolchainContent(existingToolchainContent: string, preInstalledToolchains: string): string { diff --git a/sources/test/jest/predefined-toolchains.test.ts b/sources/test/jest/predefined-toolchains.test.ts index 4e4f01e2..637d9b94 100644 --- a/sources/test/jest/predefined-toolchains.test.ts +++ b/sources/test/jest/predefined-toolchains.test.ts @@ -39,7 +39,7 @@ describe('predefined-toolchains', () => { 8 - \${env.JAVA_HOME_8_X64} + /jdks/foo_8 @@ -48,7 +48,7 @@ describe('predefined-toolchains', () => { 11 - \${env.JAVA_HOME_11_X64} + /jdks/foo_11 @@ -57,7 +57,7 @@ describe('predefined-toolchains', () => { 21 - \${env.JAVA_HOME_21_ARM64} + /jdks/foo_21 @@ -81,7 +81,7 @@ describe('predefined-toolchains', () => { 8 - \${env.JAVA_HOME_8_X64} + /jdks/foo_8 @@ -98,7 +98,7 @@ describe('predefined-toolchains', () => { 8 - \${env.JAVA_HOME_8_X64} + /jdks/foo_8 @@ -109,7 +109,7 @@ describe('predefined-toolchains', () => { 11 - \${env.JAVA_HOME_11_X64} + /jdks/foo_11