From c13f22886b09107fb1842c1ca9a0103d9cd7fba6 Mon Sep 17 00:00:00 2001 From: Dmitry Shibanov Date: Thu, 31 Mar 2022 16:09:19 +0200 Subject: [PATCH 1/3] add rc support. --- dist/setup/index.js | 16 +++++++++++++++- src/installer.ts | 13 ++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/dist/setup/index.js b/dist/setup/index.js index b4b1cfdf8..7a362b47f 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -61400,6 +61400,7 @@ function evaluateVersions(versions, versionSpec) { return version; } function queryDistForMatch(versionSpec, arch = os.arch()) { + var _a; return __awaiter(this, void 0, void 0, function* () { let osPlat = os.platform(); let osArch = translateArchToDistUrl(arch); @@ -61419,7 +61420,8 @@ function queryDistForMatch(versionSpec, arch = os.arch()) { throw new Error(`Unexpected OS '${osPlat}'`); } let versions = []; - let nodeVersions = yield getVersionsFromDist(); + let preRelease = (_a = semver.prerelease(versionSpec)) !== null && _a !== void 0 ? _a : []; + let nodeVersions = yield (preRelease[0] === 'rc' ? getRcVersionsFromDist() : getVersionsFromDist()); nodeVersions.forEach((nodeVersion) => { // ensure this version supports your os and platform if (nodeVersion.files.indexOf(dataFileName) >= 0) { @@ -61443,6 +61445,18 @@ function getVersionsFromDist() { }); } exports.getVersionsFromDist = getVersionsFromDist; +function getRcVersionsFromDist() { + return __awaiter(this, void 0, void 0, function* () { + let dataUrl = 'https://nodejs.org/download/rc/index.json'; + let httpClient = new hc.HttpClient('setup-node', [], { + allowRetries: true, + maxRetries: 3 + }); + let response = yield httpClient.getJson(dataUrl); + return response.result || []; + }); +} +exports.getRcVersionsFromDist = getRcVersionsFromDist; // For non LTS versions of Node, the files we need (for Windows) are sometimes located // in a different folder than they normally are for other versions. // Normally the format is similar to: https://nodejs.org/dist/v5.10.1/node-v5.10.1-win-x64.7z diff --git a/src/installer.ts b/src/installer.ts index a9baae0a1..4f17d1156 100644 --- a/src/installer.ts +++ b/src/installer.ts @@ -371,7 +371,8 @@ async function queryDistForMatch( } let versions: string[] = []; - let nodeVersions = await getVersionsFromDist(); + let preRelease = semver.prerelease(versionSpec) ?? []; + let nodeVersions = await (preRelease[0] === 'rc' ? getRcVersionsFromDist() : getVersionsFromDist()); nodeVersions.forEach((nodeVersion: INodeVersion) => { // ensure this version supports your os and platform @@ -395,6 +396,16 @@ export async function getVersionsFromDist(): Promise { return response.result || []; } +export async function getRcVersionsFromDist(): Promise { + let dataUrl = 'https://nodejs.org/download/rc/index.json'; + let httpClient = new hc.HttpClient('setup-node', [], { + allowRetries: true, + maxRetries: 3 + }); + let response = await httpClient.getJson(dataUrl); + return response.result || []; +} + // For non LTS versions of Node, the files we need (for Windows) are sometimes located // in a different folder than they normally are for other versions. // Normally the format is similar to: https://nodejs.org/dist/v5.10.1/node-v5.10.1-win-x64.7z From 6ce97c28a3dadb5eebc3919ed645e35f656d8c6a Mon Sep 17 00:00:00 2001 From: Dmitry Shibanov Date: Thu, 31 Mar 2022 16:24:21 +0200 Subject: [PATCH 2/3] add different url --- dist/setup/index.js | 4 +++- src/installer.ts | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/dist/setup/index.js b/dist/setup/index.js index 7a362b47f..a3b581c56 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -61336,6 +61336,7 @@ function getInfoFromManifest(versionSpec, stable, auth, osArch = translateArchTo }); } function getInfoFromDist(versionSpec, arch = os.arch()) { + var _a; return __awaiter(this, void 0, void 0, function* () { let osPlat = os.platform(); let osArch = translateArchToDistUrl(arch); @@ -61352,7 +61353,8 @@ function getInfoFromDist(versionSpec, arch = os.arch()) { ? `node-v${version}-win-${osArch}` : `node-v${version}-${osPlat}-${osArch}`; let urlFileName = osPlat == 'win32' ? `${fileName}.7z` : `${fileName}.tar.gz`; - let url = `https://nodejs.org/dist/v${version}/${urlFileName}`; + const isPrerelease = ((_a = semver.prerelease(versionSpec)) !== null && _a !== void 0 ? _a : [])[0] === 'rc'; + let url = isPrerelease ? `https://nodejs.org/download/rc/v${version}/${urlFileName}` : `https://nodejs.org/dist/v${version}/${urlFileName}`; return { downloadUrl: url, resolvedVersion: version, diff --git a/src/installer.ts b/src/installer.ts index 4f17d1156..c1bc2806d 100644 --- a/src/installer.ts +++ b/src/installer.ts @@ -287,7 +287,8 @@ async function getInfoFromDist( : `node-v${version}-${osPlat}-${osArch}`; let urlFileName: string = osPlat == 'win32' ? `${fileName}.7z` : `${fileName}.tar.gz`; - let url = `https://nodejs.org/dist/v${version}/${urlFileName}`; + const isPrerelease = (semver.prerelease(versionSpec) ?? [])[0] === 'rc'; + let url = isPrerelease ? `https://nodejs.org/download/rc/v${version}/${urlFileName}` : `https://nodejs.org/dist/v${version}/${urlFileName}`; return { downloadUrl: url, From 59134978fc41c645e83433da01a8e5cbb08429a9 Mon Sep 17 00:00:00 2001 From: Dmitry Shibanov Date: Thu, 13 Oct 2022 12:16:10 +0200 Subject: [PATCH 3/3] rebuild dist --- dist/setup/index.js | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/dist/setup/index.js b/dist/setup/index.js index afe6749e1..8ab26a1b3 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -73352,6 +73352,7 @@ function getInfoFromManifest(versionSpec, stable, auth, osArch = translateArchTo }); } function getInfoFromDist(versionSpec, arch = os.arch(), nodeVersions) { + var _a; return __awaiter(this, void 0, void 0, function* () { let osPlat = os.platform(); let osArch = translateArchToDistUrl(arch); @@ -73367,7 +73368,8 @@ function getInfoFromDist(versionSpec, arch = os.arch(), nodeVersions) { ? `node-v${version}-win-${osArch}` : `node-v${version}-${osPlat}-${osArch}`; let urlFileName = osPlat == 'win32' ? `${fileName}.7z` : `${fileName}.tar.gz`; - let url = `https://nodejs.org/dist/v${version}/${urlFileName}`; + const isPrerelease = ((_a = semver.prerelease(versionSpec)) !== null && _a !== void 0 ? _a : [])[0] === 'rc'; + let url = isPrerelease ? `https://nodejs.org/download/rc/v${version}/${urlFileName}` : `https://nodejs.org/dist/v${version}/${urlFileName}`; return { downloadUrl: url, resolvedVersion: version, @@ -73415,6 +73417,7 @@ function evaluateVersions(versions, versionSpec) { return version; } function queryDistForMatch(versionSpec, arch = os.arch(), nodeVersions) { + var _a; return __awaiter(this, void 0, void 0, function* () { let osPlat = os.platform(); let osArch = translateArchToDistUrl(arch); @@ -73435,7 +73438,8 @@ function queryDistForMatch(versionSpec, arch = os.arch(), nodeVersions) { } if (!nodeVersions) { core.debug('No dist manifest cached'); - nodeVersions = yield getVersionsFromDist(); + let preRelease = (_a = semver.prerelease(versionSpec)) !== null && _a !== void 0 ? _a : []; + nodeVersions = yield (preRelease[0] === 'rc' ? getRcVersionsFromDist() : getVersionsFromDist()); } let versions = []; if (isLatestSyntax(versionSpec)) { @@ -73465,6 +73469,18 @@ function getVersionsFromDist() { }); } exports.getVersionsFromDist = getVersionsFromDist; +function getRcVersionsFromDist() { + return __awaiter(this, void 0, void 0, function* () { + let dataUrl = 'https://nodejs.org/download/rc/index.json'; + let httpClient = new hc.HttpClient('setup-node', [], { + allowRetries: true, + maxRetries: 3 + }); + let response = yield httpClient.getJson(dataUrl); + return response.result || []; + }); +} +exports.getRcVersionsFromDist = getRcVersionsFromDist; // For non LTS versions of Node, the files we need (for Windows) are sometimes located // in a different folder than they normally are for other versions. // Normally the format is similar to: https://nodejs.org/dist/v5.10.1/node-v5.10.1-win-x64.7z