Skip to content

Commit

Permalink
Avoid env-var interpolation in toolchains.xml (#518)
Browse files Browse the repository at this point in the history
Fixes #511
  • Loading branch information
bigdaz authored Jan 21, 2025
2 parents 52d4223 + faf1d7c commit ec1d1bf
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 23 deletions.
37 changes: 20 additions & 17 deletions sources/src/caching/gradle-user-home-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 = `<?xml version="1.0" encoding="UTF-8"?>
return `<?xml version="1.0" encoding="UTF-8"?>
<toolchains>
<!-- JDK Toolchains installed by default on GitHub-hosted runners -->
`
for (const javaHomeEnv of javaHomeEnvs) {
const version = javaHomeEnv.match(/JAVA_HOME_(\d+)_/)?.[1]!
toolchainsXml += ` <toolchain>
${javaHomeEnvs
.map(
({jdkVersion, jdkPath}) => ` <toolchain>
<type>jdk</type>
<provides>
<version>${version}</version>
<version>${jdkVersion}</version>
</provides>
<configuration>
<jdkHome>\${env.${javaHomeEnv}}</jdkHome>
<jdkHome>${jdkPath}</jdkHome>
</configuration>
</toolchain>\n`
}
toolchainsXml += `</toolchains>\n`
return toolchainsXml
</toolchain>`
)
.join('\n')}
</toolchains>\n`
}

export function mergeToolchainContent(existingToolchainContent: string, preInstalledToolchains: string): string {
Expand Down
12 changes: 6 additions & 6 deletions sources/test/jest/predefined-toolchains.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ describe('predefined-toolchains', () => {
<version>8</version>
</provides>
<configuration>
<jdkHome>\${env.JAVA_HOME_8_X64}</jdkHome>
<jdkHome>/jdks/foo_8</jdkHome>
</configuration>
</toolchain>
<toolchain>
Expand All @@ -48,7 +48,7 @@ describe('predefined-toolchains', () => {
<version>11</version>
</provides>
<configuration>
<jdkHome>\${env.JAVA_HOME_11_X64}</jdkHome>
<jdkHome>/jdks/foo_11</jdkHome>
</configuration>
</toolchain>
<toolchain>
Expand All @@ -57,7 +57,7 @@ describe('predefined-toolchains', () => {
<version>21</version>
</provides>
<configuration>
<jdkHome>\${env.JAVA_HOME_21_ARM64}</jdkHome>
<jdkHome>/jdks/foo_21</jdkHome>
</configuration>
</toolchain>
</toolchains>
Expand All @@ -81,7 +81,7 @@ describe('predefined-toolchains', () => {
<version>8</version>
</provides>
<configuration>
<jdkHome>\${env.JAVA_HOME_8_X64}</jdkHome>
<jdkHome>/jdks/foo_8</jdkHome>
</configuration>
</toolchain>
</toolchains>
Expand All @@ -98,7 +98,7 @@ describe('predefined-toolchains', () => {
<version>8</version>
</provides>
<configuration>
<jdkHome>\${env.JAVA_HOME_8_X64}</jdkHome>
<jdkHome>/jdks/foo_8</jdkHome>
</configuration>
</toolchain>
Expand All @@ -109,7 +109,7 @@ describe('predefined-toolchains', () => {
<version>11</version>
</provides>
<configuration>
<jdkHome>\${env.JAVA_HOME_11_X64}</jdkHome>
<jdkHome>/jdks/foo_11</jdkHome>
</configuration>
</toolchain>
</toolchains>
Expand Down

0 comments on commit ec1d1bf

Please sign in to comment.