mirror of
				https://gitea.com/actions/setup-node.git
				synced 2025-10-29 15:52:42 +08:00 
			
		
		
		
	Compare commits
	
		
			1 Commits
		
	
	
		
			users/eric
			...
			node-versi
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | e73ffbcdec | 
							
								
								
									
										444
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										444
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							| @@ -1338,7 +1338,7 @@ var __importStar = (this && this.__importStar) || function (mod) { | |||||||
| }; | }; | ||||||
| Object.defineProperty(exports, "__esModule", { value: true }); | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
| const semver = __importStar(__webpack_require__(280)); | const semver = __importStar(__webpack_require__(280)); | ||||||
| const core_1 = __webpack_require__(470); | const core_1 = __webpack_require__(902); | ||||||
| // needs to be require for core node modules to be mocked | // needs to be require for core node modules to be mocked | ||||||
| /* eslint @typescript-eslint/no-require-imports: 0 */ | /* eslint @typescript-eslint/no-require-imports: 0 */ | ||||||
| const os = __webpack_require__(87); | const os = __webpack_require__(87); | ||||||
| @@ -4631,6 +4631,7 @@ const core = __importStar(__webpack_require__(470)); | |||||||
| const installer = __importStar(__webpack_require__(749)); | const installer = __importStar(__webpack_require__(749)); | ||||||
| const auth = __importStar(__webpack_require__(202)); | const auth = __importStar(__webpack_require__(202)); | ||||||
| const path = __importStar(__webpack_require__(622)); | const path = __importStar(__webpack_require__(622)); | ||||||
|  | const url_1 = __webpack_require__(835); | ||||||
| function run() { | function run() { | ||||||
|     return __awaiter(this, void 0, void 0, function* () { |     return __awaiter(this, void 0, void 0, function* () { | ||||||
|         try { |         try { | ||||||
| @@ -4645,8 +4646,9 @@ function run() { | |||||||
|             console.log(`version: ${version}`); |             console.log(`version: ${version}`); | ||||||
|             if (version) { |             if (version) { | ||||||
|                 let token = core.getInput('token'); |                 let token = core.getInput('token'); | ||||||
|  |                 let auth = !token || isGhes() ? undefined : `token ${token}`; | ||||||
|                 let stable = (core.getInput('stable') || 'true').toUpperCase() === 'TRUE'; |                 let stable = (core.getInput('stable') || 'true').toUpperCase() === 'TRUE'; | ||||||
|                 yield installer.getNode(version, stable, token); |                 yield installer.getNode(version, stable, auth); | ||||||
|             } |             } | ||||||
|             const registryUrl = core.getInput('registry-url'); |             const registryUrl = core.getInput('registry-url'); | ||||||
|             const alwaysAuth = core.getInput('always-auth'); |             const alwaysAuth = core.getInput('always-auth'); | ||||||
| @@ -4664,6 +4666,10 @@ function run() { | |||||||
|     }); |     }); | ||||||
| } | } | ||||||
| exports.run = run; | exports.run = run; | ||||||
|  | function isGhes() { | ||||||
|  |     const ghUrl = new url_1.URL(process.env['GITHUB_SERVER_URL'] || 'https://github.com'); | ||||||
|  |     return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM'; | ||||||
|  | } | ||||||
| //# sourceMappingURL=main.js.map | //# sourceMappingURL=main.js.map | ||||||
|  |  | ||||||
| /***/ }), | /***/ }), | ||||||
| @@ -10883,7 +10889,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { | |||||||
|     return (mod && mod.__esModule) ? mod : { "default": mod }; |     return (mod && mod.__esModule) ? mod : { "default": mod }; | ||||||
| }; | }; | ||||||
| Object.defineProperty(exports, "__esModule", { value: true }); | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
| const core = __importStar(__webpack_require__(470)); | const core = __importStar(__webpack_require__(902)); | ||||||
| const io = __importStar(__webpack_require__(1)); | const io = __importStar(__webpack_require__(1)); | ||||||
| const fs = __importStar(__webpack_require__(747)); | const fs = __importStar(__webpack_require__(747)); | ||||||
| const mm = __importStar(__webpack_require__(31)); | const mm = __importStar(__webpack_require__(31)); | ||||||
| @@ -10912,9 +10918,10 @@ const userAgent = 'actions/tool-cache'; | |||||||
|  * |  * | ||||||
|  * @param url       url of tool to download |  * @param url       url of tool to download | ||||||
|  * @param dest      path to download tool |  * @param dest      path to download tool | ||||||
|  |  * @param auth      authorization header | ||||||
|  * @returns         path to downloaded tool |  * @returns         path to downloaded tool | ||||||
|  */ |  */ | ||||||
| function downloadTool(url, dest, token) { | function downloadTool(url, dest, auth) { | ||||||
|     return __awaiter(this, void 0, void 0, function* () { |     return __awaiter(this, void 0, void 0, function* () { | ||||||
|         dest = dest || path.join(_getTempDirectory(), v4_1.default()); |         dest = dest || path.join(_getTempDirectory(), v4_1.default()); | ||||||
|         yield io.mkdirP(path.dirname(dest)); |         yield io.mkdirP(path.dirname(dest)); | ||||||
| @@ -10925,7 +10932,7 @@ function downloadTool(url, dest, token) { | |||||||
|         const maxSeconds = _getGlobal('TEST_DOWNLOAD_TOOL_RETRY_MAX_SECONDS', 20); |         const maxSeconds = _getGlobal('TEST_DOWNLOAD_TOOL_RETRY_MAX_SECONDS', 20); | ||||||
|         const retryHelper = new retry_helper_1.RetryHelper(maxAttempts, minSeconds, maxSeconds); |         const retryHelper = new retry_helper_1.RetryHelper(maxAttempts, minSeconds, maxSeconds); | ||||||
|         return yield retryHelper.execute(() => __awaiter(this, void 0, void 0, function* () { |         return yield retryHelper.execute(() => __awaiter(this, void 0, void 0, function* () { | ||||||
|             return yield downloadToolAttempt(url, dest || '', token); |             return yield downloadToolAttempt(url, dest || '', auth); | ||||||
|         }), (err) => { |         }), (err) => { | ||||||
|             if (err instanceof HTTPError && err.httpStatusCode) { |             if (err instanceof HTTPError && err.httpStatusCode) { | ||||||
|                 // Don't retry anything less than 500, except 408 Request Timeout and 429 Too Many Requests |                 // Don't retry anything less than 500, except 408 Request Timeout and 429 Too Many Requests | ||||||
| @@ -10941,7 +10948,7 @@ function downloadTool(url, dest, token) { | |||||||
|     }); |     }); | ||||||
| } | } | ||||||
| exports.downloadTool = downloadTool; | exports.downloadTool = downloadTool; | ||||||
| function downloadToolAttempt(url, dest, token) { | function downloadToolAttempt(url, dest, auth) { | ||||||
|     return __awaiter(this, void 0, void 0, function* () { |     return __awaiter(this, void 0, void 0, function* () { | ||||||
|         if (fs.existsSync(dest)) { |         if (fs.existsSync(dest)) { | ||||||
|             throw new Error(`Destination file path ${dest} already exists`); |             throw new Error(`Destination file path ${dest} already exists`); | ||||||
| @@ -10951,9 +10958,10 @@ function downloadToolAttempt(url, dest, token) { | |||||||
|             allowRetries: false |             allowRetries: false | ||||||
|         }); |         }); | ||||||
|         let headers; |         let headers; | ||||||
|         if (token) { |         if (auth) { | ||||||
|  |             core.debug('set auth'); | ||||||
|             headers = { |             headers = { | ||||||
|                 authorization: `token ${token}` |                 authorization: auth | ||||||
|             }; |             }; | ||||||
|         } |         } | ||||||
|         const response = yield http.get(url, headers); |         const response = yield http.get(url, headers); | ||||||
| @@ -11011,9 +11019,10 @@ function extract7z(file, dest, _7zPath) { | |||||||
|         process.chdir(dest); |         process.chdir(dest); | ||||||
|         if (_7zPath) { |         if (_7zPath) { | ||||||
|             try { |             try { | ||||||
|  |                 const logLevel = core.isDebug() ? '-bb1' : '-bb0'; | ||||||
|                 const args = [ |                 const args = [ | ||||||
|                     'x', |                     'x', | ||||||
|                     '-bb1', |                     logLevel, | ||||||
|                     '-bd', |                     '-bd', | ||||||
|                     '-sccUTF-8', |                     '-sccUTF-8', | ||||||
|                     file |                     file | ||||||
| @@ -11096,6 +11105,9 @@ function extractTar(file, dest, flags = 'xz') { | |||||||
|         else { |         else { | ||||||
|             args = [flags]; |             args = [flags]; | ||||||
|         } |         } | ||||||
|  |         if (core.isDebug() && !flags.includes('v')) { | ||||||
|  |             args.push('-v'); | ||||||
|  |         } | ||||||
|         let destArg = dest; |         let destArg = dest; | ||||||
|         let fileArg = file; |         let fileArg = file; | ||||||
|         if (IS_WINDOWS && isGnuTar) { |         if (IS_WINDOWS && isGnuTar) { | ||||||
| @@ -11145,7 +11157,7 @@ function extractZipWin(file, dest) { | |||||||
|         const escapedDest = dest.replace(/'/g, "''").replace(/"|\n|\r/g, ''); |         const escapedDest = dest.replace(/'/g, "''").replace(/"|\n|\r/g, ''); | ||||||
|         const command = `$ErrorActionPreference = 'Stop' ; try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ; [System.IO.Compression.ZipFile]::ExtractToDirectory('${escapedFile}', '${escapedDest}')`; |         const command = `$ErrorActionPreference = 'Stop' ; try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ; [System.IO.Compression.ZipFile]::ExtractToDirectory('${escapedFile}', '${escapedDest}')`; | ||||||
|         // run powershell |         // run powershell | ||||||
|         const powershellPath = yield io.which('powershell'); |         const powershellPath = yield io.which('powershell', true); | ||||||
|         const args = [ |         const args = [ | ||||||
|             '-NoLogo', |             '-NoLogo', | ||||||
|             '-Sta', |             '-Sta', | ||||||
| @@ -11161,8 +11173,12 @@ function extractZipWin(file, dest) { | |||||||
| } | } | ||||||
| function extractZipNix(file, dest) { | function extractZipNix(file, dest) { | ||||||
|     return __awaiter(this, void 0, void 0, function* () { |     return __awaiter(this, void 0, void 0, function* () { | ||||||
|         const unzipPath = yield io.which('unzip'); |         const unzipPath = yield io.which('unzip', true); | ||||||
|         yield exec_1.exec(`"${unzipPath}"`, [file], { cwd: dest }); |         const args = [file]; | ||||||
|  |         if (!core.isDebug()) { | ||||||
|  |             args.unshift('-q'); | ||||||
|  |         } | ||||||
|  |         yield exec_1.exec(`"${unzipPath}"`, args, { cwd: dest }); | ||||||
|     }); |     }); | ||||||
| } | } | ||||||
| /** | /** | ||||||
| @@ -11290,14 +11306,16 @@ function findAllVersions(toolName, arch) { | |||||||
|     return versions; |     return versions; | ||||||
| } | } | ||||||
| exports.findAllVersions = findAllVersions; | exports.findAllVersions = findAllVersions; | ||||||
| function getManifestFromRepo(owner, repo, token, branch = 'master') { | function getManifestFromRepo(owner, repo, auth, branch = 'master') { | ||||||
|     return __awaiter(this, void 0, void 0, function* () { |     return __awaiter(this, void 0, void 0, function* () { | ||||||
|         let releases = []; |         let releases = []; | ||||||
|         const treeUrl = `https://api.github.com/repos/${owner}/${repo}/git/trees/${branch}`; |         const treeUrl = `https://api.github.com/repos/${owner}/${repo}/git/trees/${branch}`; | ||||||
|         const http = new httpm.HttpClient('tool-cache'); |         const http = new httpm.HttpClient('tool-cache'); | ||||||
|         const headers = { |         const headers = {}; | ||||||
|             authorization: `token ${token}` |         if (auth) { | ||||||
|         }; |             core.debug('set auth'); | ||||||
|  |             headers.authorization = auth; | ||||||
|  |         } | ||||||
|         const response = yield http.getJson(treeUrl, headers); |         const response = yield http.getJson(treeUrl, headers); | ||||||
|         if (!response.result) { |         if (!response.result) { | ||||||
|             return releases; |             return releases; | ||||||
| @@ -12976,12 +12994,11 @@ const tc = __importStar(__webpack_require__(533)); | |||||||
| const path = __importStar(__webpack_require__(622)); | const path = __importStar(__webpack_require__(622)); | ||||||
| const semver = __importStar(__webpack_require__(280)); | const semver = __importStar(__webpack_require__(280)); | ||||||
| const fs = __webpack_require__(747); | const fs = __webpack_require__(747); | ||||||
| function getNode(versionSpec, stable, token) { | function getNode(versionSpec, stable, auth) { | ||||||
|     return __awaiter(this, void 0, void 0, function* () { |     return __awaiter(this, void 0, void 0, function* () { | ||||||
|         let osPlat = os.platform(); |         let osPlat = os.platform(); | ||||||
|         let osArch = translateArchToDistUrl(os.arch()); |         let osArch = translateArchToDistUrl(os.arch()); | ||||||
|         // check cache |         // check cache | ||||||
|         let info = null; |  | ||||||
|         let toolPath; |         let toolPath; | ||||||
|         toolPath = tc.find('node', versionSpec); |         toolPath = tc.find('node', versionSpec); | ||||||
|         // If not found in cache, download |         // If not found in cache, download | ||||||
| @@ -12990,31 +13007,58 @@ function getNode(versionSpec, stable, token) { | |||||||
|         } |         } | ||||||
|         else { |         else { | ||||||
|             console.log(`Attempting to download ${versionSpec}...`); |             console.log(`Attempting to download ${versionSpec}...`); | ||||||
|             let info = yield getInfoFromManifest(versionSpec, stable, token); |  | ||||||
|             if (!info) { |  | ||||||
|                 console.log('Not found in manifest.  Falling back to download directly from Node'); |  | ||||||
|                 info = yield getInfoFromDist(versionSpec); |  | ||||||
|             } |  | ||||||
|             if (!info) { |  | ||||||
|                 throw new Error(`Unable to find Node version '${versionSpec}' for platform ${osPlat} and architecture ${osArch}.`); |  | ||||||
|             } |  | ||||||
|             console.log(`Acquiring ${info.resolvedVersion} from ${info.downloadUrl}`); |  | ||||||
|             let downloadPath = ''; |             let downloadPath = ''; | ||||||
|  |             let info = null; | ||||||
|  |             // | ||||||
|  |             // Try download from internal distribution (popular versions only) | ||||||
|  |             // | ||||||
|             try { |             try { | ||||||
|                 downloadPath = yield tc.downloadTool(info.downloadUrl, undefined, token); |                 info = yield getInfoFromManifest(versionSpec, stable, auth); | ||||||
|  |                 if (info) { | ||||||
|  |                     console.log(`Acquiring ${info.resolvedVersion} from ${info.downloadUrl}`); | ||||||
|  |                     downloadPath = yield tc.downloadTool(info.downloadUrl, undefined, auth); | ||||||
|  |                 } | ||||||
|  |                 else { | ||||||
|  |                     console.log('Not found in manifest.  Falling back to download directly from Node'); | ||||||
|  |                 } | ||||||
|             } |             } | ||||||
|             catch (err) { |             catch (err) { | ||||||
|                 if (err instanceof tc.HTTPError && err.httpStatusCode == 404) { |                 // Rate limit? | ||||||
|                     yield acquireNodeFromFallbackLocation(info.resolvedVersion); |                 if (err instanceof tc.HTTPError && | ||||||
|                     return; |                     (err.httpStatusCode === 403 || err.httpStatusCode === 429)) { | ||||||
|  |                     console.log(`Received HTTP status code ${err.httpStatusCode}.  This usually indicates the rate limit has been exceeded`); | ||||||
|  |                 } | ||||||
|  |                 else { | ||||||
|  |                     console.log(err.message); | ||||||
|  |                 } | ||||||
|  |                 core.debug(err.stack); | ||||||
|  |                 console.log('Falling back to download directly from Node'); | ||||||
|  |             } | ||||||
|  |             // | ||||||
|  |             // Download from nodejs.org | ||||||
|  |             // | ||||||
|  |             if (!downloadPath) { | ||||||
|  |                 info = yield getInfoFromDist(versionSpec); | ||||||
|  |                 if (!info) { | ||||||
|  |                     throw new Error(`Unable to find Node version '${versionSpec}' for platform ${osPlat} and architecture ${osArch}.`); | ||||||
|  |                 } | ||||||
|  |                 console.log(`Acquiring ${info.resolvedVersion} from ${info.downloadUrl}`); | ||||||
|  |                 try { | ||||||
|  |                     downloadPath = yield tc.downloadTool(info.downloadUrl); | ||||||
|  |                 } | ||||||
|  |                 catch (err) { | ||||||
|  |                     if (err instanceof tc.HTTPError && err.httpStatusCode == 404) { | ||||||
|  |                         return yield acquireNodeFromFallbackLocation(info.resolvedVersion); | ||||||
|  |                     } | ||||||
|  |                     throw err; | ||||||
|                 } |                 } | ||||||
|                 throw err; |  | ||||||
|             } |             } | ||||||
|             // |             // | ||||||
|             // Extract |             // Extract | ||||||
|             // |             // | ||||||
|             console.log('Extracting ...'); |             console.log('Extracting ...'); | ||||||
|             let extPath; |             let extPath; | ||||||
|  |             info = info || {}; // satisfy compiler, never null when reaches here | ||||||
|             if (osPlat == 'win32') { |             if (osPlat == 'win32') { | ||||||
|                 let _7zPath = path.join(__dirname, '..', 'externals', '7zr.exe'); |                 let _7zPath = path.join(__dirname, '..', 'externals', '7zr.exe'); | ||||||
|                 extPath = yield tc.extract7z(downloadPath, undefined, _7zPath); |                 extPath = yield tc.extract7z(downloadPath, undefined, _7zPath); | ||||||
| @@ -13052,10 +13096,10 @@ function getNode(versionSpec, stable, token) { | |||||||
|     }); |     }); | ||||||
| } | } | ||||||
| exports.getNode = getNode; | exports.getNode = getNode; | ||||||
| function getInfoFromManifest(versionSpec, stable, token) { | function getInfoFromManifest(versionSpec, stable, auth) { | ||||||
|     return __awaiter(this, void 0, void 0, function* () { |     return __awaiter(this, void 0, void 0, function* () { | ||||||
|         let info = null; |         let info = null; | ||||||
|         const releases = yield tc.getManifestFromRepo('actions', 'node-versions', token); |         const releases = yield tc.getManifestFromRepo('actions', 'node-versions', auth); | ||||||
|         console.log(`matching ${versionSpec}...`); |         console.log(`matching ${versionSpec}...`); | ||||||
|         const rel = yield tc.findFromManifest(versionSpec, stable, releases); |         const rel = yield tc.findFromManifest(versionSpec, stable, releases); | ||||||
|         if (rel && rel.files.length > 0) { |         if (rel && rel.files.length > 0) { | ||||||
| @@ -13063,7 +13107,6 @@ function getInfoFromManifest(versionSpec, stable, token) { | |||||||
|             info.resolvedVersion = rel.version; |             info.resolvedVersion = rel.version; | ||||||
|             info.downloadUrl = rel.files[0].download_url; |             info.downloadUrl = rel.files[0].download_url; | ||||||
|             info.fileName = rel.files[0].filename; |             info.fileName = rel.files[0].filename; | ||||||
|             info.token = token; |  | ||||||
|         } |         } | ||||||
|         return info; |         return info; | ||||||
|     }); |     }); | ||||||
| @@ -13072,7 +13115,6 @@ function getInfoFromDist(versionSpec) { | |||||||
|     return __awaiter(this, void 0, void 0, function* () { |     return __awaiter(this, void 0, void 0, function* () { | ||||||
|         let osPlat = os.platform(); |         let osPlat = os.platform(); | ||||||
|         let osArch = translateArchToDistUrl(os.arch()); |         let osArch = translateArchToDistUrl(os.arch()); | ||||||
|         let info = null; |  | ||||||
|         let version; |         let version; | ||||||
|         version = yield queryDistForMatch(versionSpec); |         version = yield queryDistForMatch(versionSpec); | ||||||
|         if (!version) { |         if (!version) { | ||||||
| @@ -15956,6 +15998,105 @@ function set(object, path, value) { | |||||||
| module.exports = set; | module.exports = set; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /***/ }), | ||||||
|  |  | ||||||
|  | /***/ 888: | ||||||
|  | /***/ (function(__unusedmodule, exports, __webpack_require__) { | ||||||
|  |  | ||||||
|  | "use strict"; | ||||||
|  |  | ||||||
|  | var __importStar = (this && this.__importStar) || function (mod) { | ||||||
|  |     if (mod && mod.__esModule) return mod; | ||||||
|  |     var result = {}; | ||||||
|  |     if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; | ||||||
|  |     result["default"] = mod; | ||||||
|  |     return result; | ||||||
|  | }; | ||||||
|  | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
|  | const os = __importStar(__webpack_require__(87)); | ||||||
|  | /** | ||||||
|  |  * Commands | ||||||
|  |  * | ||||||
|  |  * Command Format: | ||||||
|  |  *   ::name key=value,key=value::message | ||||||
|  |  * | ||||||
|  |  * Examples: | ||||||
|  |  *   ::warning::This is the message | ||||||
|  |  *   ::set-env name=MY_VAR::some value | ||||||
|  |  */ | ||||||
|  | function issueCommand(command, properties, message) { | ||||||
|  |     const cmd = new Command(command, properties, message); | ||||||
|  |     process.stdout.write(cmd.toString() + os.EOL); | ||||||
|  | } | ||||||
|  | exports.issueCommand = issueCommand; | ||||||
|  | function issue(name, message = '') { | ||||||
|  |     issueCommand(name, {}, message); | ||||||
|  | } | ||||||
|  | exports.issue = issue; | ||||||
|  | const CMD_STRING = '::'; | ||||||
|  | class Command { | ||||||
|  |     constructor(command, properties, message) { | ||||||
|  |         if (!command) { | ||||||
|  |             command = 'missing.command'; | ||||||
|  |         } | ||||||
|  |         this.command = command; | ||||||
|  |         this.properties = properties; | ||||||
|  |         this.message = message; | ||||||
|  |     } | ||||||
|  |     toString() { | ||||||
|  |         let cmdStr = CMD_STRING + this.command; | ||||||
|  |         if (this.properties && Object.keys(this.properties).length > 0) { | ||||||
|  |             cmdStr += ' '; | ||||||
|  |             let first = true; | ||||||
|  |             for (const key in this.properties) { | ||||||
|  |                 if (this.properties.hasOwnProperty(key)) { | ||||||
|  |                     const val = this.properties[key]; | ||||||
|  |                     if (val) { | ||||||
|  |                         if (first) { | ||||||
|  |                             first = false; | ||||||
|  |                         } | ||||||
|  |                         else { | ||||||
|  |                             cmdStr += ','; | ||||||
|  |                         } | ||||||
|  |                         cmdStr += `${key}=${escapeProperty(val)}`; | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         cmdStr += `${CMD_STRING}${escapeData(this.message)}`; | ||||||
|  |         return cmdStr; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | /** | ||||||
|  |  * Sanitizes an input into a string so it can be passed into issueCommand safely | ||||||
|  |  * @param input input to sanitize into a string | ||||||
|  |  */ | ||||||
|  | function toCommandValue(input) { | ||||||
|  |     if (input === null || input === undefined) { | ||||||
|  |         return ''; | ||||||
|  |     } | ||||||
|  |     else if (typeof input === 'string' || input instanceof String) { | ||||||
|  |         return input; | ||||||
|  |     } | ||||||
|  |     return JSON.stringify(input); | ||||||
|  | } | ||||||
|  | exports.toCommandValue = toCommandValue; | ||||||
|  | function escapeData(s) { | ||||||
|  |     return toCommandValue(s) | ||||||
|  |         .replace(/%/g, '%25') | ||||||
|  |         .replace(/\r/g, '%0D') | ||||||
|  |         .replace(/\n/g, '%0A'); | ||||||
|  | } | ||||||
|  | function escapeProperty(s) { | ||||||
|  |     return toCommandValue(s) | ||||||
|  |         .replace(/%/g, '%25') | ||||||
|  |         .replace(/\r/g, '%0D') | ||||||
|  |         .replace(/\n/g, '%0A') | ||||||
|  |         .replace(/:/g, '%3A') | ||||||
|  |         .replace(/,/g, '%2C'); | ||||||
|  | } | ||||||
|  | //# sourceMappingURL=command.js.map | ||||||
|  |  | ||||||
| /***/ }), | /***/ }), | ||||||
|  |  | ||||||
| /***/ 899: | /***/ 899: | ||||||
| @@ -16061,6 +16202,235 @@ function patchForDeprecation(octokit, apiOptions, method, methodName) { | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /***/ }), | ||||||
|  |  | ||||||
|  | /***/ 902: | ||||||
|  | /***/ (function(__unusedmodule, exports, __webpack_require__) { | ||||||
|  |  | ||||||
|  | "use strict"; | ||||||
|  |  | ||||||
|  | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||||||
|  |     function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||||||
|  |     return new (P || (P = Promise))(function (resolve, reject) { | ||||||
|  |         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||||||
|  |         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||||||
|  |         function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | ||||||
|  |         step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||||||
|  |     }); | ||||||
|  | }; | ||||||
|  | var __importStar = (this && this.__importStar) || function (mod) { | ||||||
|  |     if (mod && mod.__esModule) return mod; | ||||||
|  |     var result = {}; | ||||||
|  |     if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; | ||||||
|  |     result["default"] = mod; | ||||||
|  |     return result; | ||||||
|  | }; | ||||||
|  | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
|  | const command_1 = __webpack_require__(888); | ||||||
|  | const os = __importStar(__webpack_require__(87)); | ||||||
|  | const path = __importStar(__webpack_require__(622)); | ||||||
|  | /** | ||||||
|  |  * The code to exit an action | ||||||
|  |  */ | ||||||
|  | var ExitCode; | ||||||
|  | (function (ExitCode) { | ||||||
|  |     /** | ||||||
|  |      * A code indicating that the action was successful | ||||||
|  |      */ | ||||||
|  |     ExitCode[ExitCode["Success"] = 0] = "Success"; | ||||||
|  |     /** | ||||||
|  |      * A code indicating that the action was a failure | ||||||
|  |      */ | ||||||
|  |     ExitCode[ExitCode["Failure"] = 1] = "Failure"; | ||||||
|  | })(ExitCode = exports.ExitCode || (exports.ExitCode = {})); | ||||||
|  | //----------------------------------------------------------------------- | ||||||
|  | // Variables | ||||||
|  | //----------------------------------------------------------------------- | ||||||
|  | /** | ||||||
|  |  * Sets env variable for this action and future actions in the job | ||||||
|  |  * @param name the name of the variable to set | ||||||
|  |  * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify | ||||||
|  |  */ | ||||||
|  | // eslint-disable-next-line @typescript-eslint/no-explicit-any | ||||||
|  | function exportVariable(name, val) { | ||||||
|  |     const convertedVal = command_1.toCommandValue(val); | ||||||
|  |     process.env[name] = convertedVal; | ||||||
|  |     command_1.issueCommand('set-env', { name }, convertedVal); | ||||||
|  | } | ||||||
|  | exports.exportVariable = exportVariable; | ||||||
|  | /** | ||||||
|  |  * Registers a secret which will get masked from logs | ||||||
|  |  * @param secret value of the secret | ||||||
|  |  */ | ||||||
|  | function setSecret(secret) { | ||||||
|  |     command_1.issueCommand('add-mask', {}, secret); | ||||||
|  | } | ||||||
|  | exports.setSecret = setSecret; | ||||||
|  | /** | ||||||
|  |  * Prepends inputPath to the PATH (for this action and future actions) | ||||||
|  |  * @param inputPath | ||||||
|  |  */ | ||||||
|  | function addPath(inputPath) { | ||||||
|  |     command_1.issueCommand('add-path', {}, inputPath); | ||||||
|  |     process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`; | ||||||
|  | } | ||||||
|  | exports.addPath = addPath; | ||||||
|  | /** | ||||||
|  |  * Gets the value of an input.  The value is also trimmed. | ||||||
|  |  * | ||||||
|  |  * @param     name     name of the input to get | ||||||
|  |  * @param     options  optional. See InputOptions. | ||||||
|  |  * @returns   string | ||||||
|  |  */ | ||||||
|  | function getInput(name, options) { | ||||||
|  |     const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || ''; | ||||||
|  |     if (options && options.required && !val) { | ||||||
|  |         throw new Error(`Input required and not supplied: ${name}`); | ||||||
|  |     } | ||||||
|  |     return val.trim(); | ||||||
|  | } | ||||||
|  | exports.getInput = getInput; | ||||||
|  | /** | ||||||
|  |  * Sets the value of an output. | ||||||
|  |  * | ||||||
|  |  * @param     name     name of the output to set | ||||||
|  |  * @param     value    value to store. Non-string values will be converted to a string via JSON.stringify | ||||||
|  |  */ | ||||||
|  | // eslint-disable-next-line @typescript-eslint/no-explicit-any | ||||||
|  | function setOutput(name, value) { | ||||||
|  |     command_1.issueCommand('set-output', { name }, value); | ||||||
|  | } | ||||||
|  | exports.setOutput = setOutput; | ||||||
|  | /** | ||||||
|  |  * Enables or disables the echoing of commands into stdout for the rest of the step. | ||||||
|  |  * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set. | ||||||
|  |  * | ||||||
|  |  */ | ||||||
|  | function setCommandEcho(enabled) { | ||||||
|  |     command_1.issue('echo', enabled ? 'on' : 'off'); | ||||||
|  | } | ||||||
|  | exports.setCommandEcho = setCommandEcho; | ||||||
|  | //----------------------------------------------------------------------- | ||||||
|  | // Results | ||||||
|  | //----------------------------------------------------------------------- | ||||||
|  | /** | ||||||
|  |  * Sets the action status to failed. | ||||||
|  |  * When the action exits it will be with an exit code of 1 | ||||||
|  |  * @param message add error issue message | ||||||
|  |  */ | ||||||
|  | function setFailed(message) { | ||||||
|  |     process.exitCode = ExitCode.Failure; | ||||||
|  |     error(message); | ||||||
|  | } | ||||||
|  | exports.setFailed = setFailed; | ||||||
|  | //----------------------------------------------------------------------- | ||||||
|  | // Logging Commands | ||||||
|  | //----------------------------------------------------------------------- | ||||||
|  | /** | ||||||
|  |  * Gets whether Actions Step Debug is on or not | ||||||
|  |  */ | ||||||
|  | function isDebug() { | ||||||
|  |     return process.env['RUNNER_DEBUG'] === '1'; | ||||||
|  | } | ||||||
|  | exports.isDebug = isDebug; | ||||||
|  | /** | ||||||
|  |  * Writes debug message to user log | ||||||
|  |  * @param message debug message | ||||||
|  |  */ | ||||||
|  | function debug(message) { | ||||||
|  |     command_1.issueCommand('debug', {}, message); | ||||||
|  | } | ||||||
|  | exports.debug = debug; | ||||||
|  | /** | ||||||
|  |  * Adds an error issue | ||||||
|  |  * @param message error issue message. Errors will be converted to string via toString() | ||||||
|  |  */ | ||||||
|  | function error(message) { | ||||||
|  |     command_1.issue('error', message instanceof Error ? message.toString() : message); | ||||||
|  | } | ||||||
|  | exports.error = error; | ||||||
|  | /** | ||||||
|  |  * Adds an warning issue | ||||||
|  |  * @param message warning issue message. Errors will be converted to string via toString() | ||||||
|  |  */ | ||||||
|  | function warning(message) { | ||||||
|  |     command_1.issue('warning', message instanceof Error ? message.toString() : message); | ||||||
|  | } | ||||||
|  | exports.warning = warning; | ||||||
|  | /** | ||||||
|  |  * Writes info to log with console.log. | ||||||
|  |  * @param message info message | ||||||
|  |  */ | ||||||
|  | function info(message) { | ||||||
|  |     process.stdout.write(message + os.EOL); | ||||||
|  | } | ||||||
|  | exports.info = info; | ||||||
|  | /** | ||||||
|  |  * Begin an output group. | ||||||
|  |  * | ||||||
|  |  * Output until the next `groupEnd` will be foldable in this group | ||||||
|  |  * | ||||||
|  |  * @param name The name of the output group | ||||||
|  |  */ | ||||||
|  | function startGroup(name) { | ||||||
|  |     command_1.issue('group', name); | ||||||
|  | } | ||||||
|  | exports.startGroup = startGroup; | ||||||
|  | /** | ||||||
|  |  * End an output group. | ||||||
|  |  */ | ||||||
|  | function endGroup() { | ||||||
|  |     command_1.issue('endgroup'); | ||||||
|  | } | ||||||
|  | exports.endGroup = endGroup; | ||||||
|  | /** | ||||||
|  |  * Wrap an asynchronous function call in a group. | ||||||
|  |  * | ||||||
|  |  * Returns the same type as the function itself. | ||||||
|  |  * | ||||||
|  |  * @param name The name of the group | ||||||
|  |  * @param fn The function to wrap in the group | ||||||
|  |  */ | ||||||
|  | function group(name, fn) { | ||||||
|  |     return __awaiter(this, void 0, void 0, function* () { | ||||||
|  |         startGroup(name); | ||||||
|  |         let result; | ||||||
|  |         try { | ||||||
|  |             result = yield fn(); | ||||||
|  |         } | ||||||
|  |         finally { | ||||||
|  |             endGroup(); | ||||||
|  |         } | ||||||
|  |         return result; | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  | exports.group = group; | ||||||
|  | //----------------------------------------------------------------------- | ||||||
|  | // Wrapper action state | ||||||
|  | //----------------------------------------------------------------------- | ||||||
|  | /** | ||||||
|  |  * Saves state for current action, the state can only be retrieved by this action's post job execution. | ||||||
|  |  * | ||||||
|  |  * @param     name     name of the state to store | ||||||
|  |  * @param     value    value to store. Non-string values will be converted to a string via JSON.stringify | ||||||
|  |  */ | ||||||
|  | // eslint-disable-next-line @typescript-eslint/no-explicit-any | ||||||
|  | function saveState(name, value) { | ||||||
|  |     command_1.issueCommand('save-state', { name }, value); | ||||||
|  | } | ||||||
|  | exports.saveState = saveState; | ||||||
|  | /** | ||||||
|  |  * Gets the value of an state set by this action's main execution. | ||||||
|  |  * | ||||||
|  |  * @param     name     name of the state to get | ||||||
|  |  * @returns   string | ||||||
|  |  */ | ||||||
|  | function getState(name) { | ||||||
|  |     return process.env[`STATE_${name}`] || ''; | ||||||
|  | } | ||||||
|  | exports.getState = getState; | ||||||
|  | //# sourceMappingURL=core.js.map | ||||||
|  |  | ||||||
| /***/ }), | /***/ }), | ||||||
|  |  | ||||||
| /***/ 929: | /***/ 929: | ||||||
| @@ -16702,7 +17072,7 @@ var __importStar = (this && this.__importStar) || function (mod) { | |||||||
|     return result; |     return result; | ||||||
| }; | }; | ||||||
| Object.defineProperty(exports, "__esModule", { value: true }); | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
| const core = __importStar(__webpack_require__(470)); | const core = __importStar(__webpack_require__(902)); | ||||||
| /** | /** | ||||||
|  * Internal class for retries |  * Internal class for retries | ||||||
|  */ |  */ | ||||||
|   | |||||||
							
								
								
									
										13
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										13
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -40,11 +40,11 @@ | |||||||
|       "integrity": "sha512-J8KuFqVPr3p6U8W93DOXlXW6zFvrQAJANdS+vw0YhusLIq+bszW8zmK2Fh1C2kDPX8FMvwIl1OUcFgvJoXLbAg==" |       "integrity": "sha512-J8KuFqVPr3p6U8W93DOXlXW6zFvrQAJANdS+vw0YhusLIq+bszW8zmK2Fh1C2kDPX8FMvwIl1OUcFgvJoXLbAg==" | ||||||
|     }, |     }, | ||||||
|     "@actions/tool-cache": { |     "@actions/tool-cache": { | ||||||
|       "version": "1.5.3", |       "version": "1.5.4", | ||||||
|       "resolved": "https://registry.npmjs.org/@actions/tool-cache/-/tool-cache-1.5.3.tgz", |       "resolved": "https://registry.npmjs.org/@actions/tool-cache/-/tool-cache-1.5.4.tgz", | ||||||
|       "integrity": "sha512-G6OMdGvKVkApJv+nRURpi1nZUKonqWq37fqK8rdJLJr5PuWAEo/cqD/ibano7Da/LRx1yYFEMwO6RXkB2VaIqQ==", |       "integrity": "sha512-72ijIBM0s/dx2D0eYYxaxaeKWeVatOK8OHPNctJ5cyKjZp1j12egX+nW/N+tnQRNMVxTp9WjudZO5wizUBxC/w==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@actions/core": "^1.2.0", |         "@actions/core": "^1.2.3", | ||||||
|         "@actions/exec": "^1.0.0", |         "@actions/exec": "^1.0.0", | ||||||
|         "@actions/http-client": "^1.0.8", |         "@actions/http-client": "^1.0.8", | ||||||
|         "@actions/io": "^1.0.1", |         "@actions/io": "^1.0.1", | ||||||
| @@ -52,6 +52,11 @@ | |||||||
|         "uuid": "^3.3.2" |         "uuid": "^3.3.2" | ||||||
|       }, |       }, | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|  |         "@actions/core": { | ||||||
|  |           "version": "1.2.4", | ||||||
|  |           "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.4.tgz", | ||||||
|  |           "integrity": "sha512-YJCEq8BE3CdN8+7HPZ/4DxJjk/OkZV2FFIf+DlZTC/4iBlzYCD5yjRR6eiOS5llO11zbRltIRuKAjMKaWTE6cg==" | ||||||
|  |         }, | ||||||
|         "@actions/http-client": { |         "@actions/http-client": { | ||||||
|           "version": "1.0.8", |           "version": "1.0.8", | ||||||
|           "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.8.tgz", |           "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.8.tgz", | ||||||
|   | |||||||
| @@ -28,7 +28,7 @@ | |||||||
|     "@actions/github": "^1.1.0", |     "@actions/github": "^1.1.0", | ||||||
|     "@actions/http-client": "^1.0.6", |     "@actions/http-client": "^1.0.6", | ||||||
|     "@actions/io": "^1.0.2", |     "@actions/io": "^1.0.2", | ||||||
|     "@actions/tool-cache": "^1.5.3", |     "@actions/tool-cache": "^1.5.4", | ||||||
|     "semver": "^6.1.1" |     "semver": "^6.1.1" | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|   | |||||||
| @@ -6,7 +6,6 @@ import * as io from '@actions/io'; | |||||||
| import * as tc from '@actions/tool-cache'; | import * as tc from '@actions/tool-cache'; | ||||||
| import * as path from 'path'; | import * as path from 'path'; | ||||||
| import * as semver from 'semver'; | import * as semver from 'semver'; | ||||||
| import {Url} from 'url'; |  | ||||||
| import fs = require('fs'); | import fs = require('fs'); | ||||||
|  |  | ||||||
| // | // | ||||||
| @@ -20,7 +19,6 @@ export interface INodeVersion { | |||||||
|  |  | ||||||
| interface INodeVersionInfo { | interface INodeVersionInfo { | ||||||
|   downloadUrl: string; |   downloadUrl: string; | ||||||
|   token: string | null; |  | ||||||
|   resolvedVersion: string; |   resolvedVersion: string; | ||||||
|   fileName: string; |   fileName: string; | ||||||
| } | } | ||||||
| @@ -28,13 +26,12 @@ interface INodeVersionInfo { | |||||||
| export async function getNode( | export async function getNode( | ||||||
|   versionSpec: string, |   versionSpec: string, | ||||||
|   stable: boolean, |   stable: boolean, | ||||||
|   token: string |   auth: string | undefined | ||||||
| ) { | ) { | ||||||
|   let osPlat: string = os.platform(); |   let osPlat: string = os.platform(); | ||||||
|   let osArch: string = translateArchToDistUrl(os.arch()); |   let osArch: string = translateArchToDistUrl(os.arch()); | ||||||
|  |  | ||||||
|   // check cache |   // check cache | ||||||
|   let info: INodeVersionInfo | null = null; |  | ||||||
|   let toolPath: string; |   let toolPath: string; | ||||||
|   toolPath = tc.find('node', versionSpec); |   toolPath = tc.find('node', versionSpec); | ||||||
|  |  | ||||||
| @@ -43,32 +40,61 @@ export async function getNode( | |||||||
|     console.log(`Found in cache @ ${toolPath}`); |     console.log(`Found in cache @ ${toolPath}`); | ||||||
|   } else { |   } else { | ||||||
|     console.log(`Attempting to download ${versionSpec}...`); |     console.log(`Attempting to download ${versionSpec}...`); | ||||||
|     let info = await getInfoFromManifest(versionSpec, stable, token); |  | ||||||
|     if (!info) { |  | ||||||
|       console.log( |  | ||||||
|         'Not found in manifest.  Falling back to download directly from Node' |  | ||||||
|       ); |  | ||||||
|       info = await getInfoFromDist(versionSpec); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     if (!info) { |  | ||||||
|       throw new Error( |  | ||||||
|         `Unable to find Node version '${versionSpec}' for platform ${osPlat} and architecture ${osArch}.` |  | ||||||
|       ); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     console.log(`Acquiring ${info.resolvedVersion} from ${info.downloadUrl}`); |  | ||||||
|  |  | ||||||
|     let downloadPath = ''; |     let downloadPath = ''; | ||||||
|  |     let info: INodeVersionInfo | null = null; | ||||||
|  |  | ||||||
|  |     // | ||||||
|  |     // Try download from internal distribution (popular versions only) | ||||||
|  |     // | ||||||
|     try { |     try { | ||||||
|       downloadPath = await tc.downloadTool(info.downloadUrl, undefined, token); |       info = await getInfoFromManifest(versionSpec, stable, auth); | ||||||
|  |       if (info) { | ||||||
|  |         console.log( | ||||||
|  |           `Acquiring ${info.resolvedVersion} from ${info.downloadUrl}` | ||||||
|  |         ); | ||||||
|  |         downloadPath = await tc.downloadTool(info.downloadUrl, undefined, auth); | ||||||
|  |       } else { | ||||||
|  |         console.log( | ||||||
|  |           'Not found in manifest.  Falling back to download directly from Node' | ||||||
|  |         ); | ||||||
|  |       } | ||||||
|     } catch (err) { |     } catch (err) { | ||||||
|       if (err instanceof tc.HTTPError && err.httpStatusCode == 404) { |       // Rate limit? | ||||||
|         await acquireNodeFromFallbackLocation(info.resolvedVersion); |       if ( | ||||||
|         return; |         err instanceof tc.HTTPError && | ||||||
|  |         (err.httpStatusCode === 403 || err.httpStatusCode === 429) | ||||||
|  |       ) { | ||||||
|  |         console.log( | ||||||
|  |           `Received HTTP status code ${err.httpStatusCode}.  This usually indicates the rate limit has been exceeded` | ||||||
|  |         ); | ||||||
|  |       } else { | ||||||
|  |         console.log(err.message); | ||||||
|  |       } | ||||||
|  |       core.debug(err.stack); | ||||||
|  |       console.log('Falling back to download directly from Node'); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     // | ||||||
|  |     // Download from nodejs.org | ||||||
|  |     // | ||||||
|  |     if (!downloadPath) { | ||||||
|  |       info = await getInfoFromDist(versionSpec); | ||||||
|  |       if (!info) { | ||||||
|  |         throw new Error( | ||||||
|  |           `Unable to find Node version '${versionSpec}' for platform ${osPlat} and architecture ${osArch}.` | ||||||
|  |         ); | ||||||
|       } |       } | ||||||
|  |  | ||||||
|       throw err; |       console.log(`Acquiring ${info.resolvedVersion} from ${info.downloadUrl}`); | ||||||
|  |       try { | ||||||
|  |         downloadPath = await tc.downloadTool(info.downloadUrl); | ||||||
|  |       } catch (err) { | ||||||
|  |         if (err instanceof tc.HTTPError && err.httpStatusCode == 404) { | ||||||
|  |           return await acquireNodeFromFallbackLocation(info.resolvedVersion); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         throw err; | ||||||
|  |       } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     // |     // | ||||||
| @@ -76,6 +102,7 @@ export async function getNode( | |||||||
|     // |     // | ||||||
|     console.log('Extracting ...'); |     console.log('Extracting ...'); | ||||||
|     let extPath: string; |     let extPath: string; | ||||||
|  |     info = info || ({} as INodeVersionInfo); // satisfy compiler, never null when reaches here | ||||||
|     if (osPlat == 'win32') { |     if (osPlat == 'win32') { | ||||||
|       let _7zPath = path.join(__dirname, '..', 'externals', '7zr.exe'); |       let _7zPath = path.join(__dirname, '..', 'externals', '7zr.exe'); | ||||||
|       extPath = await tc.extract7z(downloadPath, undefined, _7zPath); |       extPath = await tc.extract7z(downloadPath, undefined, _7zPath); | ||||||
| @@ -117,13 +144,13 @@ export async function getNode( | |||||||
| async function getInfoFromManifest( | async function getInfoFromManifest( | ||||||
|   versionSpec: string, |   versionSpec: string, | ||||||
|   stable: boolean, |   stable: boolean, | ||||||
|   token: string |   auth: string | undefined | ||||||
| ): Promise<INodeVersionInfo | null> { | ): Promise<INodeVersionInfo | null> { | ||||||
|   let info: INodeVersionInfo | null = null; |   let info: INodeVersionInfo | null = null; | ||||||
|   const releases = await tc.getManifestFromRepo( |   const releases = await tc.getManifestFromRepo( | ||||||
|     'actions', |     'actions', | ||||||
|     'node-versions', |     'node-versions', | ||||||
|     token |     auth | ||||||
|   ); |   ); | ||||||
|   console.log(`matching ${versionSpec}...`); |   console.log(`matching ${versionSpec}...`); | ||||||
|   const rel = await tc.findFromManifest(versionSpec, stable, releases); |   const rel = await tc.findFromManifest(versionSpec, stable, releases); | ||||||
| @@ -133,7 +160,6 @@ async function getInfoFromManifest( | |||||||
|     info.resolvedVersion = rel.version; |     info.resolvedVersion = rel.version; | ||||||
|     info.downloadUrl = rel.files[0].download_url; |     info.downloadUrl = rel.files[0].download_url; | ||||||
|     info.fileName = rel.files[0].filename; |     info.fileName = rel.files[0].filename; | ||||||
|     info.token = token; |  | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   return info; |   return info; | ||||||
| @@ -145,7 +171,6 @@ async function getInfoFromDist( | |||||||
|   let osPlat: string = os.platform(); |   let osPlat: string = os.platform(); | ||||||
|   let osArch: string = translateArchToDistUrl(os.arch()); |   let osArch: string = translateArchToDistUrl(os.arch()); | ||||||
|  |  | ||||||
|   let info: INodeVersionInfo | null = null; |  | ||||||
|   let version: string; |   let version: string; | ||||||
|  |  | ||||||
|   version = await queryDistForMatch(versionSpec); |   version = await queryDistForMatch(versionSpec); | ||||||
|   | |||||||
							
								
								
									
										11
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								src/main.ts
									
									
									
									
									
								
							| @@ -2,6 +2,7 @@ import * as core from '@actions/core'; | |||||||
| import * as installer from './installer'; | import * as installer from './installer'; | ||||||
| import * as auth from './authutil'; | import * as auth from './authutil'; | ||||||
| import * as path from 'path'; | import * as path from 'path'; | ||||||
|  | import {URL} from 'url'; | ||||||
|  |  | ||||||
| export async function run() { | export async function run() { | ||||||
|   try { |   try { | ||||||
| @@ -17,8 +18,9 @@ export async function run() { | |||||||
|     console.log(`version: ${version}`); |     console.log(`version: ${version}`); | ||||||
|     if (version) { |     if (version) { | ||||||
|       let token = core.getInput('token'); |       let token = core.getInput('token'); | ||||||
|  |       let auth = !token || isGhes() ? undefined : `token ${token}`; | ||||||
|       let stable = (core.getInput('stable') || 'true').toUpperCase() === 'TRUE'; |       let stable = (core.getInput('stable') || 'true').toUpperCase() === 'TRUE'; | ||||||
|       await installer.getNode(version, stable, token); |       await installer.getNode(version, stable, auth); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     const registryUrl: string = core.getInput('registry-url'); |     const registryUrl: string = core.getInput('registry-url'); | ||||||
| @@ -39,3 +41,10 @@ export async function run() { | |||||||
|     core.setFailed(error.message); |     core.setFailed(error.message); | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | function isGhes(): boolean { | ||||||
|  |   const ghUrl = new URL( | ||||||
|  |     process.env['GITHUB_SERVER_URL'] || 'https://github.com' | ||||||
|  |   ); | ||||||
|  |   return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM'; | ||||||
|  | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user