This commit is contained in:
FUJI Goro 2026-01-26 18:10:57 +01:00 committed by GitHub
commit 3ce8793053
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 109 additions and 4 deletions

24
dist/setup/index.js vendored
View file

@ -49567,6 +49567,7 @@ exports.getManifest = getManifest;
exports.getInfoFromManifest = getInfoFromManifest;
exports.findMatch = findMatch;
exports.getVersionsDist = getVersionsDist;
exports.normalizeVersionSpec = normalizeVersionSpec;
exports.makeSemver = makeSemver;
exports.parseGoVersionFile = parseGoVersionFile;
exports.resolveStableVersionInput = resolveStableVersionInput;
@ -49851,12 +49852,13 @@ function findMatch(versionSpec_1) {
if (!candidates) {
throw new Error(`golang download url did not return results`);
}
const normalizedVersionSpec = normalizeVersionSpec(versionSpec);
let goFile;
for (let i = 0; i < candidates.length; i++) {
const candidate = candidates[i];
const version = makeSemver(candidate.version);
core.debug(`check ${version} satisfies ${versionSpec}`);
if (semver.satisfies(version, versionSpec)) {
core.debug(`check ${version} satisfies ${normalizedVersionSpec}`);
if (semver.satisfies(version, normalizedVersionSpec)) {
goFile = candidate.files.find(file => {
core.debug(`${file.arch}===${archFilter} && ${file.os}===${platFilter}`);
return file.arch === archFilter && file.os === platFilter;
@ -49887,6 +49889,24 @@ function getVersionsDist(dlUrl) {
});
}
//
// Normalize user-provided version spec for semver matching
// Converts Go-style prerelease versions while preserving range semantics
// 1.13 => 1.13 (preserved for range matching)
// 1.14rc1 => 1.14.0-rc.1
// ^1.14rc1 => ^1.14.0-rc.1
// >=1.14beta1 => >=1.14.0-beta.1
function normalizeVersionSpec(versionSpec) {
// Match semver range prefixes: ^, ~, >, >=, <, <=, =
const rangePrefixMatch = versionSpec.match(/^([~^]|[<>]=?|=)/);
const rangePrefix = (rangePrefixMatch === null || rangePrefixMatch === void 0 ? void 0 : rangePrefixMatch[0]) || '';
const version = versionSpec.slice(rangePrefix.length);
// Only convert if it has Go-style prerelease (e.g., rc1, beta1)
if (!/(?:rc|beta)\d+/.test(version)) {
return versionSpec;
}
return rangePrefix + makeSemver(version);
}
//
// Convert the go version syntax into semver for semver matching
// 1.13.1 => 1.13.1
// 1.13 => 1.13.0