mirror of
				https://gitea.com/actions/setup-node.git
				synced 2025-10-31 07:47:14 +00:00 
			
		
		
		
	Compare commits
	
		
			40 Commits
		
	
	
		
			start-v2
			...
			node-versi
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | e73ffbcdec | ||
|   | 2ae9264901 | ||
|   | 2a0fbec10d | ||
|   | 0a9e8b1d0f | ||
|   | a875da2574 | ||
|   | a80a170798 | ||
|   | 5e7b076d00 | ||
|   | 8e221092f3 | ||
|   | 6a1b66a606 | ||
|   | 9fcef3fcea | ||
|   | beb2155295 | ||
|   | 11f920585c | ||
|   | dd6f5ab66c | ||
|   | f7c5caf605 | ||
|   | a4145577de | ||
|   | 42746a4f3c | ||
|   | c8617ac6ae | ||
|   | 1b2d431484 | ||
|   | 5e5ef8fd55 | ||
|   | 2fb08c4f31 | ||
|   | e3ad114cc4 | ||
|   | 501fd29d66 | ||
|   | 2bdb2ab1c9 | ||
|   | a47b2f66c6 | ||
|   | 89ea387bde | ||
|   | ed3a918d25 | ||
|   | 44c9c18728 | ||
|   | e715d9a456 | ||
|   | b1f2e78536 | ||
|   | 55897e37f3 | ||
|   | 46903d1fb1 | ||
|   | 28505ad4d3 | ||
|   | 2d53d29868 | ||
|   | 1e163ded31 | ||
|   | ffde538781 | ||
|   | 0cc027b656 | ||
|   | e99a7e62b2 | ||
|   | 0dc69b3a71 | ||
|   | 52eb8a7524 | ||
|   | 6b7f6c9fa6 | 
							
								
								
									
										32
									
								
								.github/workflows/build-test.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								.github/workflows/build-test.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | |||||||
|  | name: build-test | ||||||
|  |  | ||||||
|  | on: | ||||||
|  |   pull_request: | ||||||
|  |     paths-ignore: | ||||||
|  |       - '**.md'     | ||||||
|  |   push:     | ||||||
|  |     branches: | ||||||
|  |       - master | ||||||
|  |       - releases/* | ||||||
|  |     paths-ignore: | ||||||
|  |       - '**.md' | ||||||
|  |        | ||||||
|  | jobs: | ||||||
|  |   build: | ||||||
|  |     runs-on: ${{ matrix.operating-system }} | ||||||
|  |     strategy: | ||||||
|  |       matrix: | ||||||
|  |         operating-system: [ubuntu-latest, windows-latest] | ||||||
|  |     steps: | ||||||
|  |       - uses: actions/checkout@v2 | ||||||
|  |       - name: Setup node 12 | ||||||
|  |         uses: actions/setup-node@v1 | ||||||
|  |         with: | ||||||
|  |           node-version: 12.x | ||||||
|  |       - run: npm ci | ||||||
|  |       - run: npm run build | ||||||
|  |       - run: npm run format-check | ||||||
|  |       - run: npm test | ||||||
|  |       - name: Verify no unstaged changes | ||||||
|  |         if: runner.os != 'windows' | ||||||
|  |         run: __tests__/verify-no-unstaged-changes.sh | ||||||
							
								
								
									
										56
									
								
								.github/workflows/proxy.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								.github/workflows/proxy.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,56 @@ | |||||||
|  | name: proxy | ||||||
|  |  | ||||||
|  | on: | ||||||
|  |   pull_request: | ||||||
|  |     paths-ignore: | ||||||
|  |       - '**.md'     | ||||||
|  |   push:     | ||||||
|  |     branches: | ||||||
|  |       - master | ||||||
|  |       - releases/* | ||||||
|  |     paths-ignore: | ||||||
|  |       - '**.md' | ||||||
|  |        | ||||||
|  | jobs: | ||||||
|  |   test-proxy: | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     strategy:     | ||||||
|  |       fail-fast: false     | ||||||
|  |     container: | ||||||
|  |       image: ubuntu:latest | ||||||
|  |       options: --dns 127.0.0.1 | ||||||
|  |     services: | ||||||
|  |       squid-proxy: | ||||||
|  |         image: datadog/squid:latest | ||||||
|  |         ports: | ||||||
|  |           - 3128:3128 | ||||||
|  |     env: | ||||||
|  |       https_proxy: http://squid-proxy:3128 | ||||||
|  |     steps: | ||||||
|  |       - uses: actions/checkout@v2 | ||||||
|  |       - name: Clear tool cache | ||||||
|  |         run: rm -rf $RUNNER_TOOL_CACHE/* | ||||||
|  |       - name: Setup node 10 | ||||||
|  |         uses: ./ | ||||||
|  |         with: | ||||||
|  |           node-version: 10.x | ||||||
|  |       - name: Verify node and npm | ||||||
|  |         run: __tests__/verify-node.sh 10 | ||||||
|  |  | ||||||
|  |   test-bypass-proxy: | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     strategy:     | ||||||
|  |       fail-fast: false | ||||||
|  |     env: | ||||||
|  |       https_proxy: http://no-such-proxy:3128 | ||||||
|  |       no_proxy: api.github.com,github.com,nodejs.org,registry.npmjs.org,*.s3.amazonaws.com,s3.amazonaws.com | ||||||
|  |     steps: | ||||||
|  |       - uses: actions/checkout@v2 | ||||||
|  |       - name: Clear tool cache | ||||||
|  |         run: rm -rf $RUNNER_TOOL_CACHE/* | ||||||
|  |       - name: Setup node 11 | ||||||
|  |         uses: ./ | ||||||
|  |         with: | ||||||
|  |           node-version: 11 | ||||||
|  |       - name: Verify node and npm | ||||||
|  |         run: __tests__/verify-node.sh 11 | ||||||
							
								
								
									
										47
									
								
								.github/workflows/versions.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								.github/workflows/versions.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,47 @@ | |||||||
|  | name: versions | ||||||
|  |  | ||||||
|  | on: | ||||||
|  |   pull_request: | ||||||
|  |     paths-ignore: | ||||||
|  |       - '**.md'     | ||||||
|  |   push:     | ||||||
|  |     branches: | ||||||
|  |       - master | ||||||
|  |       - releases/* | ||||||
|  |     paths-ignore: | ||||||
|  |       - '**.md' | ||||||
|  |        | ||||||
|  | jobs: | ||||||
|  |   versions: | ||||||
|  |     runs-on: ${{ matrix.operating-system }} | ||||||
|  |     strategy: | ||||||
|  |       fail-fast: false | ||||||
|  |       matrix: | ||||||
|  |         operating-system: [ubuntu-latest, windows-latest] | ||||||
|  |     defaults: | ||||||
|  |       run: | ||||||
|  |         shell: bash | ||||||
|  |     steps: | ||||||
|  |       - uses: actions/checkout@v2 | ||||||
|  |       # test version that falls through to node dist | ||||||
|  |       - name: Setup node 11 from dist | ||||||
|  |         uses: ./ | ||||||
|  |         with: | ||||||
|  |           node-version: 11           | ||||||
|  |       - name: Verify node and npm | ||||||
|  |         run: __tests__/verify-node.sh 11 | ||||||
|  |       # test old versions which didn't have npm and layout different       | ||||||
|  |       - name: Setup node 0.12.18 from dist | ||||||
|  |         uses: ./                  | ||||||
|  |         with: | ||||||
|  |           node-version: 0.12.18 | ||||||
|  |       - name: Verify node | ||||||
|  |         shell: bash | ||||||
|  |         run: __tests__/verify-node.sh 0.12.18 SKIP_NPM  | ||||||
|  |       # test version from node manifest | ||||||
|  |       - name: Setup node 12.16.2 from manifest | ||||||
|  |         uses: ./ | ||||||
|  |         with: | ||||||
|  |           node-version: 12.16.2 | ||||||
|  |       - name: Verify node and npm | ||||||
|  |         run: __tests__/verify-node.sh 12         | ||||||
							
								
								
									
										94
									
								
								.github/workflows/workflow.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										94
									
								
								.github/workflows/workflow.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1,94 +0,0 @@ | |||||||
| name: Main workflow |  | ||||||
|  |  | ||||||
| on: |  | ||||||
|   pull_request: |  | ||||||
|   push: |  | ||||||
|     branches: |  | ||||||
|       - master |  | ||||||
|       - releases/* |  | ||||||
|  |  | ||||||
| jobs: |  | ||||||
|   build: |  | ||||||
|     runs-on: ${{ matrix.operating-system }} |  | ||||||
|     strategy: |  | ||||||
|       matrix: |  | ||||||
|         operating-system: [ubuntu-latest, windows-latest] |  | ||||||
|     steps: |  | ||||||
|       - uses: actions/checkout@v2 |  | ||||||
|       - name: Setup node 12 |  | ||||||
|         uses: actions/setup-node@v1 |  | ||||||
|         with: |  | ||||||
|           node-version: 12.x |  | ||||||
|       - run: npm ci |  | ||||||
|       - run: npm run build |  | ||||||
|       - run: npm run format-check |  | ||||||
|       - run: npm test |  | ||||||
|       - name: Verify no unstaged changes |  | ||||||
|         if: runner.os != 'windows' |  | ||||||
|         run: __tests__/verify-no-unstaged-changes.sh |  | ||||||
|  |  | ||||||
|   test: |  | ||||||
|     runs-on: ubuntu-latest |  | ||||||
|     steps: |  | ||||||
|       - uses: actions/checkout@v2 |  | ||||||
|       - name: Clear tool cache |  | ||||||
|         run: rm -rf $RUNNER_TOOL_CACHE/* |  | ||||||
|       - name: Setup node 10 |  | ||||||
|         uses: ./ |  | ||||||
|         with: |  | ||||||
|           node-version: 10.x |  | ||||||
|       - name: Verify node and npm |  | ||||||
|         run: __tests__/verify-node.sh 10 |  | ||||||
|  |  | ||||||
|   test-fallback: |  | ||||||
|     runs-on: windows-latest |  | ||||||
|     steps: |  | ||||||
|       - uses: actions/checkout@v2 |  | ||||||
|       - name: Clear tool cache |  | ||||||
|         run: mv "${{ runner.tool_cache }}" "${{ runner.tool_cache }}.old" |  | ||||||
|       - name: Setup node 0.12.18 # For non LTS versions of Node, the zip is not always available |  | ||||||
|         uses: ./                 # and falls back to downloading node.exe and node.lib |  | ||||||
|         with: |  | ||||||
|           node-version: 0.12.18 |  | ||||||
|       - name: Verify node |  | ||||||
|         shell: bash |  | ||||||
|         run: __tests__/verify-node.sh 0.12.18 SKIP_NPM |  | ||||||
|  |  | ||||||
|   test-proxy: |  | ||||||
|     runs-on: ubuntu-latest |  | ||||||
|     container: |  | ||||||
|       image: ubuntu:latest |  | ||||||
|       options: --dns 127.0.0.1 |  | ||||||
|     services: |  | ||||||
|       squid-proxy: |  | ||||||
|         image: datadog/squid:latest |  | ||||||
|         ports: |  | ||||||
|           - 3128:3128 |  | ||||||
|     env: |  | ||||||
|       https_proxy: http://squid-proxy:3128 |  | ||||||
|     steps: |  | ||||||
|       - uses: actions/checkout@v2 |  | ||||||
|       - name: Clear tool cache |  | ||||||
|         run: rm -rf $RUNNER_TOOL_CACHE/* |  | ||||||
|       - name: Setup node 10 |  | ||||||
|         uses: ./ |  | ||||||
|         with: |  | ||||||
|           node-version: 10.x |  | ||||||
|       - name: Verify node and npm |  | ||||||
|         run: __tests__/verify-node.sh 10 |  | ||||||
|  |  | ||||||
|   test-bypass-proxy: |  | ||||||
|     runs-on: ubuntu-latest |  | ||||||
|     env: |  | ||||||
|       https_proxy: http://no-such-proxy:3128 |  | ||||||
|       no_proxy: github.com,nodejs.org,registry.npmjs.org |  | ||||||
|     steps: |  | ||||||
|       - uses: actions/checkout@v2 |  | ||||||
|       - name: Clear tool cache |  | ||||||
|         run: rm -rf $RUNNER_TOOL_CACHE/* |  | ||||||
|       - name: Setup node 10 |  | ||||||
|         uses: ./ |  | ||||||
|         with: |  | ||||||
|           node-version: 10.x |  | ||||||
|       - name: Verify node and npm |  | ||||||
|         run: __tests__/verify-node.sh 10 |  | ||||||
| @@ -31,7 +31,7 @@ jobs: | |||||||
|     runs-on: ubuntu-16.04 |     runs-on: ubuntu-16.04 | ||||||
|     strategy: |     strategy: | ||||||
|       matrix: |       matrix: | ||||||
|         node: [ '10', '8' ] |         node: [ '10', '12' ] | ||||||
|     name: Node ${{ matrix.node }} sample |     name: Node ${{ matrix.node }} sample | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v2 |       - uses: actions/checkout@v2 | ||||||
|   | |||||||
							
								
								
									
										505
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										505
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							| @@ -563,13 +563,20 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge | |||||||
|         step((generator = generator.apply(thisArg, _arguments || [])).next()); |         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 }); | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
| const os = __webpack_require__(87); | const os = __importStar(__webpack_require__(87)); | ||||||
| const events = __webpack_require__(614); | const events = __importStar(__webpack_require__(614)); | ||||||
| const child = __webpack_require__(129); | const child = __importStar(__webpack_require__(129)); | ||||||
| const path = __webpack_require__(622); | const path = __importStar(__webpack_require__(622)); | ||||||
| const io = __webpack_require__(1); | const io = __importStar(__webpack_require__(1)); | ||||||
| const ioUtil = __webpack_require__(672); | const ioUtil = __importStar(__webpack_require__(672)); | ||||||
| /* eslint-disable @typescript-eslint/unbound-method */ | /* eslint-disable @typescript-eslint/unbound-method */ | ||||||
| const IS_WINDOWS = process.platform === 'win32'; | const IS_WINDOWS = process.platform === 'win32'; | ||||||
| /* | /* | ||||||
| @@ -1013,6 +1020,12 @@ class ToolRunner extends events.EventEmitter { | |||||||
|                         resolve(exitCode); |                         resolve(exitCode); | ||||||
|                     } |                     } | ||||||
|                 }); |                 }); | ||||||
|  |                 if (this.options.input) { | ||||||
|  |                     if (!cp.stdin) { | ||||||
|  |                         throw new Error('child process missing stdin'); | ||||||
|  |                     } | ||||||
|  |                     cp.stdin.end(this.options.input); | ||||||
|  |                 } | ||||||
|             }); |             }); | ||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
| @@ -1325,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); | ||||||
| @@ -4618,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 { | ||||||
| @@ -4632,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'); | ||||||
| @@ -4651,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 | ||||||
|  |  | ||||||
| /***/ }), | /***/ }), | ||||||
| @@ -10870,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)); | ||||||
| @@ -10899,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)); | ||||||
| @@ -10912,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 | ||||||
| @@ -10928,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`); | ||||||
| @@ -10938,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); | ||||||
| @@ -10998,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 | ||||||
| @@ -11076,7 +11098,16 @@ function extractTar(file, dest, flags = 'xz') { | |||||||
|         core.debug(versionOutput.trim()); |         core.debug(versionOutput.trim()); | ||||||
|         const isGnuTar = versionOutput.toUpperCase().includes('GNU TAR'); |         const isGnuTar = versionOutput.toUpperCase().includes('GNU TAR'); | ||||||
|         // Initialize args |         // Initialize args | ||||||
|         const args = [flags]; |         let args; | ||||||
|  |         if (flags instanceof Array) { | ||||||
|  |             args = flags; | ||||||
|  |         } | ||||||
|  |         else { | ||||||
|  |             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) { | ||||||
| @@ -11126,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', | ||||||
| @@ -11142,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 }); | ||||||
|     }); |     }); | ||||||
| } | } | ||||||
| /** | /** | ||||||
| @@ -11271,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; | ||||||
| @@ -12956,12 +12993,12 @@ const io = __importStar(__webpack_require__(1)); | |||||||
| const tc = __importStar(__webpack_require__(533)); | 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)); | ||||||
| function getNode(versionSpec, stable, token) { | const fs = __webpack_require__(747); | ||||||
|  | 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 | ||||||
| @@ -12970,40 +13007,80 @@ 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? | ||||||
|                     return yield acquireNodeFromFallbackLocation(info.resolvedVersion); |                 if (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 = 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 ...'); | ||||||
|             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); | ||||||
|  |                 // 7z extracts to folder matching file name | ||||||
|  |                 let nestedPath = path.join(extPath, path.basename(info.fileName, '.7z')); | ||||||
|  |                 if (fs.existsSync(nestedPath)) { | ||||||
|  |                     extPath = nestedPath; | ||||||
|  |                 } | ||||||
|             } |             } | ||||||
|             else { |             else { | ||||||
|                 extPath = yield tc.extractTar(downloadPath); |                 extPath = yield tc.extractTar(downloadPath, undefined, [ | ||||||
|  |                     'xz', | ||||||
|  |                     '--strip', | ||||||
|  |                     '1' | ||||||
|  |                 ]); | ||||||
|             } |             } | ||||||
|             // |             // | ||||||
|             // Install into the local tool cache - node extracts with a root folder that matches the fileName downloaded |             // Install into the local tool cache - node extracts with a root folder that matches the fileName downloaded | ||||||
|             // |             // | ||||||
|  |             console.log('Adding to the cache ...'); | ||||||
|             toolPath = yield tc.cacheDir(extPath, 'node', info.resolvedVersion); |             toolPath = yield tc.cacheDir(extPath, 'node', info.resolvedVersion); | ||||||
|  |             console.log('Done'); | ||||||
|         } |         } | ||||||
|         // |         // | ||||||
|         // a tool installer initimately knows details about the layout of that tool |         // a tool installer initimately knows details about the layout of that tool | ||||||
| @@ -13019,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) { | ||||||
| @@ -13030,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; | ||||||
|     }); |     }); | ||||||
| @@ -13039,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) { | ||||||
| @@ -13158,6 +13233,7 @@ function acquireNodeFromFallbackLocation(version) { | |||||||
|         try { |         try { | ||||||
|             exeUrl = `https://nodejs.org/dist/v${version}/win-${osArch}/node.exe`; |             exeUrl = `https://nodejs.org/dist/v${version}/win-${osArch}/node.exe`; | ||||||
|             libUrl = `https://nodejs.org/dist/v${version}/win-${osArch}/node.lib`; |             libUrl = `https://nodejs.org/dist/v${version}/win-${osArch}/node.lib`; | ||||||
|  |             console.log(`Downloading only node binary from ${exeUrl}`); | ||||||
|             const exePath = yield tc.downloadTool(exeUrl); |             const exePath = yield tc.downloadTool(exeUrl); | ||||||
|             yield io.cp(exePath, path.join(tempDir, 'node.exe')); |             yield io.cp(exePath, path.join(tempDir, 'node.exe')); | ||||||
|             const libPath = yield tc.downloadTool(libUrl); |             const libPath = yield tc.downloadTool(libUrl); | ||||||
| @@ -13176,7 +13252,9 @@ function acquireNodeFromFallbackLocation(version) { | |||||||
|                 throw err; |                 throw err; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         return yield tc.cacheDir(tempDir, 'node', version); |         let toolPath = yield tc.cacheDir(tempDir, 'node', version); | ||||||
|  |         core.addPath(toolPath); | ||||||
|  |         return toolPath; | ||||||
|     }); |     }); | ||||||
| } | } | ||||||
| // os.arch does not always match the relative download url, e.g. | // os.arch does not always match the relative download url, e.g. | ||||||
| @@ -15920,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: | ||||||
| @@ -16025,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: | ||||||
| @@ -16666,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 | ||||||
|  */ |  */ | ||||||
| @@ -16735,8 +17141,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge | |||||||
|         step((generator = generator.apply(thisArg, _arguments || [])).next()); |         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 }); | Object.defineProperty(exports, "__esModule", { value: true }); | ||||||
| const tr = __webpack_require__(9); | const tr = __importStar(__webpack_require__(9)); | ||||||
| /** | /** | ||||||
|  * Exec a command. |  * Exec a command. | ||||||
|  * Output will be streamed to the live console. |  * Output will be streamed to the live console. | ||||||
|   | |||||||
							
								
								
									
										19
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										19
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -10,9 +10,9 @@ | |||||||
|       "integrity": "sha512-IbCx7oefq+Gi6FWbSs2Fnw8VkEI6Y4gvjrYprY3RV//ksq/KPMlClOerJ4jRosyal6zkUIc8R9fS/cpRMlGClg==" |       "integrity": "sha512-IbCx7oefq+Gi6FWbSs2Fnw8VkEI6Y4gvjrYprY3RV//ksq/KPMlClOerJ4jRosyal6zkUIc8R9fS/cpRMlGClg==" | ||||||
|     }, |     }, | ||||||
|     "@actions/exec": { |     "@actions/exec": { | ||||||
|       "version": "1.0.3", |       "version": "1.0.4", | ||||||
|       "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.0.3.tgz", |       "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.0.4.tgz", | ||||||
|       "integrity": "sha512-TogJGnueOmM7ntCi0ASTUj4LapRRtDfj57Ja4IhPmg2fls28uVOPbAn8N+JifaOumN2UG3oEO/Ixek2A4NcYSA==", |       "integrity": "sha512-4DPChWow9yc9W3WqEbUj8Nr86xkpyE29ZzWjXucHItclLbEW6jr80Zx4nqv18QL6KK65+cifiQZXvnqgTV6oHw==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@actions/io": "^1.0.1" |         "@actions/io": "^1.0.1" | ||||||
|       } |       } | ||||||
| @@ -40,11 +40,11 @@ | |||||||
|       "integrity": "sha512-J8KuFqVPr3p6U8W93DOXlXW6zFvrQAJANdS+vw0YhusLIq+bszW8zmK2Fh1C2kDPX8FMvwIl1OUcFgvJoXLbAg==" |       "integrity": "sha512-J8KuFqVPr3p6U8W93DOXlXW6zFvrQAJANdS+vw0YhusLIq+bszW8zmK2Fh1C2kDPX8FMvwIl1OUcFgvJoXLbAg==" | ||||||
|     }, |     }, | ||||||
|     "@actions/tool-cache": { |     "@actions/tool-cache": { | ||||||
|       "version": "1.5.2", |       "version": "1.5.4", | ||||||
|       "resolved": "https://registry.npmjs.org/@actions/tool-cache/-/tool-cache-1.5.2.tgz", |       "resolved": "https://registry.npmjs.org/@actions/tool-cache/-/tool-cache-1.5.4.tgz", | ||||||
|       "integrity": "sha512-40A1St0GEo+QvHV1YRjStEoQcKKMaip+zNXPgGHcjYXCdZ7cl1LGlwOpsVVqwk+6ue/shFTS76KC1A02mVVCQA==", |       "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", | ||||||
|   | |||||||
| @@ -24,10 +24,11 @@ | |||||||
|   "license": "MIT", |   "license": "MIT", | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "@actions/core": "^1.2.2", |     "@actions/core": "^1.2.2", | ||||||
|  |     "@actions/exec": "^1.0.3", | ||||||
|     "@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.2", |     "@actions/tool-cache": "^1.5.4", | ||||||
|     "semver": "^6.1.1" |     "semver": "^6.1.1" | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|   | |||||||
							
								
								
									
										103
									
								
								src/installer.ts
									
									
									
									
									
								
							
							
						
						
									
										103
									
								
								src/installer.ts
									
									
									
									
									
								
							| @@ -6,7 +6,7 @@ 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'); | ||||||
|  |  | ||||||
| // | // | ||||||
| // Node versions interface | // Node versions interface | ||||||
| @@ -19,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; | ||||||
| } | } | ||||||
| @@ -27,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); | ||||||
|  |  | ||||||
| @@ -42,48 +40,91 @@ 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? | ||||||
|         return await acquireNodeFromFallbackLocation(info.resolvedVersion); |       if ( | ||||||
|  |         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; | ||||||
|  |       } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     // |     // | ||||||
|     // Extract |     // Extract | ||||||
|     // |     // | ||||||
|  |     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); | ||||||
|  |       // 7z extracts to folder matching file name | ||||||
|  |       let nestedPath = path.join(extPath, path.basename(info.fileName, '.7z')); | ||||||
|  |       if (fs.existsSync(nestedPath)) { | ||||||
|  |         extPath = nestedPath; | ||||||
|  |       } | ||||||
|     } else { |     } else { | ||||||
|       extPath = await tc.extractTar(downloadPath); |       extPath = await tc.extractTar(downloadPath, undefined, [ | ||||||
|  |         'xz', | ||||||
|  |         '--strip', | ||||||
|  |         '1' | ||||||
|  |       ]); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     // |     // | ||||||
|     // Install into the local tool cache - node extracts with a root folder that matches the fileName downloaded |     // Install into the local tool cache - node extracts with a root folder that matches the fileName downloaded | ||||||
|     // |     // | ||||||
|  |     console.log('Adding to the cache ...'); | ||||||
|     toolPath = await tc.cacheDir(extPath, 'node', info.resolvedVersion); |     toolPath = await tc.cacheDir(extPath, 'node', info.resolvedVersion); | ||||||
|  |     console.log('Done'); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   // |   // | ||||||
| @@ -103,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); | ||||||
| @@ -119,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; | ||||||
| @@ -131,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); | ||||||
| @@ -262,6 +301,8 @@ async function acquireNodeFromFallbackLocation( | |||||||
|     exeUrl = `https://nodejs.org/dist/v${version}/win-${osArch}/node.exe`; |     exeUrl = `https://nodejs.org/dist/v${version}/win-${osArch}/node.exe`; | ||||||
|     libUrl = `https://nodejs.org/dist/v${version}/win-${osArch}/node.lib`; |     libUrl = `https://nodejs.org/dist/v${version}/win-${osArch}/node.lib`; | ||||||
|  |  | ||||||
|  |     console.log(`Downloading only node binary from ${exeUrl}`); | ||||||
|  |  | ||||||
|     const exePath = await tc.downloadTool(exeUrl); |     const exePath = await tc.downloadTool(exeUrl); | ||||||
|     await io.cp(exePath, path.join(tempDir, 'node.exe')); |     await io.cp(exePath, path.join(tempDir, 'node.exe')); | ||||||
|     const libPath = await tc.downloadTool(libUrl); |     const libPath = await tc.downloadTool(libUrl); | ||||||
| @@ -279,7 +320,9 @@ async function acquireNodeFromFallbackLocation( | |||||||
|       throw err; |       throw err; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|   return await tc.cacheDir(tempDir, 'node', version); |   let toolPath = await tc.cacheDir(tempDir, 'node', version); | ||||||
|  |   core.addPath(toolPath); | ||||||
|  |   return toolPath; | ||||||
| } | } | ||||||
|  |  | ||||||
| // os.arch does not always match the relative download url, e.g. | // os.arch does not always match the relative download url, e.g. | ||||||
|   | |||||||
							
								
								
									
										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'; | ||||||
|  | } | ||||||
|   | |||||||
| @@ -13,7 +13,7 @@ rm -rf ./node | |||||||
| export RUNNER_TOOL_CACHE=$(pwd) | export RUNNER_TOOL_CACHE=$(pwd) | ||||||
| export RUNNER_TEMP="${RUNNER_TOOL_CACHE}/temp" | export RUNNER_TEMP="${RUNNER_TOOL_CACHE}/temp" | ||||||
| export INPUT_STABLE=true | export INPUT_STABLE=true | ||||||
| export INPUT_VERSION="12.x" | export INPUT_VERSION="12"   #"0.12.7"  #"12" #"11.15.0" | ||||||
| # export your PAT with repo scope before running | # export your PAT with repo scope before running | ||||||
| export INPUT_TOKEN=$GITHUB_TOKEN | export INPUT_TOKEN=$GITHUB_TOKEN | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user