From e082345d2e97bf4aaa71924face8be3c21f4926c Mon Sep 17 00:00:00 2001 From: lukaszgyg Date: Tue, 24 Mar 2026 19:49:56 +0100 Subject: [PATCH] fix: support SDKMAN albba identifier --- __tests__/util.test.ts | 34 ++++++++++++++++++++++++++-------- dist/cleanup/index.js | 28 +++++++++++++++------------- dist/setup/index.js | 28 +++++++++++++++------------- src/setup-java.ts | 4 +++- src/util.ts | 34 ++++++++++++++++++++-------------- 5 files changed, 79 insertions(+), 49 deletions(-) diff --git a/__tests__/util.test.ts b/__tests__/util.test.ts index 1e26415e..9fa4c1da 100644 --- a/__tests__/util.test.ts +++ b/__tests__/util.test.ts @@ -95,6 +95,7 @@ describe('getVersionFromFileContent', () => { ['java=11.0.20.1-tem\njava=21.0.20.1-tem\n', '11.0.20', 'temurin'], // choose first match ['#java=11.0.20.1-tem\njava=21.0.20.1-tem\n', '21.0.20', 'temurin'], // first one is 'commented' in .sdkmanrc ['java=21.0.5-zulu', '21.0.5', 'zulu'], + ['java=17.0.13-albba', '17.0.13', 'dragonwell'], ['java=17.0.13-amzn', '17', 'corretto'], ['java=21.0.5-graal', '21.0.5', 'graalvm'], ['java=17.0.9-graalce', '17.0.9', 'graalvm'], @@ -105,22 +106,39 @@ describe('getVersionFromFileContent', () => { ['java=21.0.5-jbr', '21.0.5', 'jetbrains'], ['java=11.0.25-sem', '11.0.25', 'semeru'], ['java=17.0.13-dragonwell', '17.0.13', 'dragonwell'] - ])('parsing %s should return version %s and distribution %s', (content: string, expectedVersion: string, expectedDist: string) => { - const actual = getVersionFromFileContent(content, 'openjdk', '.sdkmanrc'); - expect(actual?.version).toBe(expectedVersion); - expect(actual?.distribution).toBe(expectedDist); - }); + ])( + 'parsing %s should return version %s and distribution %s', + (content: string, expectedVersion: string, expectedDist: string) => { + const actual = getVersionFromFileContent( + content, + 'openjdk', + '.sdkmanrc' + ); + expect(actual?.version).toBe(expectedVersion); + expect(actual?.distribution).toBe(expectedDist); + } + ); it('should warn and return undefined distribution for unknown identifier', () => { const warnSpy = jest.spyOn(core, 'warning'); - const actual = getVersionFromFileContent('java=21.0.5-unknown', 'temurin', '.sdkmanrc'); + const actual = getVersionFromFileContent( + 'java=21.0.5-unknown', + 'temurin', + '.sdkmanrc' + ); expect(actual?.version).toBe('21.0.5'); expect(actual?.distribution).toBeUndefined(); - expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('Unknown SDKMAN distribution identifier')); + expect(warnSpy).toHaveBeenCalledWith( + expect.stringContaining('Unknown SDKMAN distribution identifier') + ); }); it('should return version without distribution when no suffix provided', () => { - const actual = getVersionFromFileContent('java=11.0.20', 'temurin', '.sdkmanrc'); + const actual = getVersionFromFileContent( + 'java=11.0.20', + 'temurin', + '.sdkmanrc' + ); expect(actual?.version).toBe('11.0.20'); expect(actual?.distribution).toBeUndefined(); }); diff --git a/dist/cleanup/index.js b/dist/cleanup/index.js index 4c883c94..a6c60705 100644 --- a/dist/cleanup/index.js +++ b/dist/cleanup/index.js @@ -49768,7 +49768,8 @@ function getVersionFromFileContent(content, distributionName, versionFile) { } else if (versionFileName == '.sdkmanrc') { // Match both version and optional distribution identifier - javaVersionRegExp = /^java\s*=\s*(?[^-\s]+)(?:-(?[a-z0-9]+))?/m; + javaVersionRegExp = + /^java\s*=\s*(?[^-\s]+)(?:-(?[a-z0-9]+))?/m; } else { javaVersionRegExp = /(?(?<=(^|\s|-))(\d+\S*))(\s|$)/; @@ -49811,18 +49812,19 @@ exports.getVersionFromFileContent = getVersionFromFileContent; // Map SDKMAN distribution identifiers to setup-java distribution names function mapSdkmanDistribution(sdkmanDist) { const distributionMap = { - 'tem': 'temurin', - 'sem': 'semeru', - 'zulu': 'zulu', - 'amzn': 'corretto', - 'graal': 'graalvm', - 'graalce': 'graalvm', - 'librca': 'liberica', - 'ms': 'microsoft', - 'oracle': 'oracle', - 'sapmchn': 'sapmachine', - 'jbr': 'jetbrains', - 'dragonwell': 'dragonwell' + tem: 'temurin', + sem: 'semeru', + albba: 'dragonwell', + zulu: 'zulu', + amzn: 'corretto', + graal: 'graalvm', + graalce: 'graalvm', + librca: 'liberica', + ms: 'microsoft', + oracle: 'oracle', + sapmchn: 'sapmachine', + jbr: 'jetbrains', + dragonwell: 'dragonwell' }; const mapped = distributionMap[sdkmanDist.toLowerCase()]; if (!mapped) { diff --git a/dist/setup/index.js b/dist/setup/index.js index 19ed0b2a..6dc5483c 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -87932,7 +87932,8 @@ function getVersionFromFileContent(content, distributionName, versionFile) { } else if (versionFileName == '.sdkmanrc') { // Match both version and optional distribution identifier - javaVersionRegExp = /^java\s*=\s*(?[^-\s]+)(?:-(?[a-z0-9]+))?/m; + javaVersionRegExp = + /^java\s*=\s*(?[^-\s]+)(?:-(?[a-z0-9]+))?/m; } else { javaVersionRegExp = /(?(?<=(^|\s|-))(\d+\S*))(\s|$)/; @@ -87975,18 +87976,19 @@ exports.getVersionFromFileContent = getVersionFromFileContent; // Map SDKMAN distribution identifiers to setup-java distribution names function mapSdkmanDistribution(sdkmanDist) { const distributionMap = { - 'tem': 'temurin', - 'sem': 'semeru', - 'zulu': 'zulu', - 'amzn': 'corretto', - 'graal': 'graalvm', - 'graalce': 'graalvm', - 'librca': 'liberica', - 'ms': 'microsoft', - 'oracle': 'oracle', - 'sapmchn': 'sapmachine', - 'jbr': 'jetbrains', - 'dragonwell': 'dragonwell' + tem: 'temurin', + sem: 'semeru', + albba: 'dragonwell', + zulu: 'zulu', + amzn: 'corretto', + graal: 'graalvm', + graalce: 'graalvm', + librca: 'liberica', + ms: 'microsoft', + oracle: 'oracle', + sapmchn: 'sapmachine', + jbr: 'jetbrains', + dragonwell: 'dragonwell' }; const mapped = distributionMap[sdkmanDist.toLowerCase()]; if (!mapped) { diff --git a/src/setup-java.ts b/src/setup-java.ts index 413f4778..de0f5abd 100644 --- a/src/setup-java.ts +++ b/src/setup-java.ts @@ -59,7 +59,9 @@ async function run() { // Use distribution from file if available, otherwise use the input if (versionInfo.distribution) { - core.info(`Using distribution '${versionInfo.distribution}' from ${versionFile}`); + core.info( + `Using distribution '${versionInfo.distribution}' from ${versionFile}` + ); distributionName = versionInfo.distribution; } else if (!distributionName) { throw new Error( diff --git a/src/util.ts b/src/util.ts index ae31383f..9cfc2b13 100644 --- a/src/util.ts +++ b/src/util.ts @@ -142,7 +142,8 @@ export function getVersionFromFileContent( /^java\s+(?:\S*-)?(?\d+(?:\.\d+)*([+_.-](?:openj9[-._]?\d[\w.-]*|java\d+|jre[-_\w]*|OpenJDK\d+[\w_.-]*|[a-z0-9]+))*)/im; } else if (versionFileName == '.sdkmanrc') { // Match both version and optional distribution identifier - javaVersionRegExp = /^java\s*=\s*(?[^-\s]+)(?:-(?[a-z0-9]+))?/m; + javaVersionRegExp = + /^java\s*=\s*(?[^-\s]+)(?:-(?[a-z0-9]+))?/m; } else { javaVersionRegExp = /(?(?<=(^|\s|-))(\d+\S*))(\s|$)/; } @@ -183,7 +184,11 @@ export function getVersionFromFileContent( // Apply DISTRIBUTIONS_ONLY_MAJOR_VERSION logic whenever the effective distribution // (either explicitly provided or extracted from the version file) is in the list. - if (DISTRIBUTIONS_ONLY_MAJOR_VERSION.includes(extractedDistribution || distributionName)) { + if ( + DISTRIBUTIONS_ONLY_MAJOR_VERSION.includes( + extractedDistribution || distributionName + ) + ) { const coerceVersion = semver.coerce(version) ?? version; version = semver.major(coerceVersion).toString(); } @@ -197,18 +202,19 @@ export function getVersionFromFileContent( // Map SDKMAN distribution identifiers to setup-java distribution names function mapSdkmanDistribution(sdkmanDist: string): string | undefined { const distributionMap: Record = { - 'tem': 'temurin', - 'sem': 'semeru', - 'zulu': 'zulu', - 'amzn': 'corretto', - 'graal': 'graalvm', - 'graalce': 'graalvm', - 'librca': 'liberica', - 'ms': 'microsoft', - 'oracle': 'oracle', - 'sapmchn': 'sapmachine', - 'jbr': 'jetbrains', - 'dragonwell': 'dragonwell' + tem: 'temurin', + sem: 'semeru', + albba: 'dragonwell', + zulu: 'zulu', + amzn: 'corretto', + graal: 'graalvm', + graalce: 'graalvm', + librca: 'liberica', + ms: 'microsoft', + oracle: 'oracle', + sapmchn: 'sapmachine', + jbr: 'jetbrains', + dragonwell: 'dragonwell' }; const mapped = distributionMap[sdkmanDist.toLowerCase()];