mirror of
https://github.com/hashicorp/setup-terraform.git
synced 2025-12-16 08:32:34 +00:00
Document pre-release behavior (#73)
* Add user agent reporting to terraform download * Upgrade js-releases dependency
This commit is contained in:
parent
32c4f59108
commit
5d2ec201a9
5 changed files with 21 additions and 18 deletions
19
dist/index.js
vendored
19
dist/index.js
vendored
|
|
@ -2347,7 +2347,7 @@ async function run () {
|
|||
const osArch = os.arch();
|
||||
|
||||
core.debug(`Finding releases for Terraform version ${version}`);
|
||||
const release = await releases.getRelease('terraform', version);
|
||||
const release = await releases.getRelease('terraform', version, 'GitHub Action: Setup Terraform');
|
||||
const platform = mapOS(osPlatform);
|
||||
const arch = mapArch(osArch);
|
||||
core.debug(`Getting build for Terraform version ${release.version}: ${platform} ${arch}`);
|
||||
|
|
@ -52497,27 +52497,30 @@ class Release {
|
|||
}
|
||||
}
|
||||
exports.Release = Release;
|
||||
function getRelease(product, version, userAgent) {
|
||||
function getRelease(product, version, userAgent, includePrerelease) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const validVersion = semver.validRange(version); // "latest" will return invalid but that's ok because we'll select it by default
|
||||
const validVersion = semver.validRange(version, { includePrerelease, loose: true }); // "latest" will return invalid but that's ok because we'll select it by default
|
||||
const indexUrl = `${releasesUrl}/${product}/index.json`;
|
||||
const headers = userAgent ? { 'User-Agent': userAgent } : null;
|
||||
const body = yield utils_1.httpsRequest(indexUrl, { headers });
|
||||
const response = JSON.parse(body);
|
||||
let release;
|
||||
if (!validVersion) { // pick the latest release
|
||||
version = Object.keys(response.versions).sort(semver.rcompare)[0];
|
||||
if (!validVersion) { // pick the latest release (prereleases will be skipped for safety, set an explicit version instead)
|
||||
const releaseVersions = Object.keys(response.versions).filter(v => !semver.prerelease(v));
|
||||
version = releaseVersions.sort((a, b) => semver.rcompare(a, b))[0];
|
||||
release = new Release(response.versions[version]);
|
||||
}
|
||||
else {
|
||||
release = matchVersion(response.versions, validVersion);
|
||||
release = matchVersion(response.versions, validVersion, includePrerelease);
|
||||
}
|
||||
return release;
|
||||
});
|
||||
}
|
||||
exports.getRelease = getRelease;
|
||||
function matchVersion(versions, range) {
|
||||
const version = semver.maxSatisfying(Object.keys(versions), range);
|
||||
function matchVersion(versions, range, includePrerelease) {
|
||||
// If a prerelease version range is given, it will match in that series (0.14-rc0, 0.14-rc1)
|
||||
// https://www.npmjs.com/package/semver#prerelease-tags
|
||||
const version = semver.maxSatisfying(Object.keys(versions), range, { includePrerelease });
|
||||
if (version) {
|
||||
return new Release(versions[version]);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue