mirror of
				https://github.com/actions/setup-go.git
				synced 2025-10-30 15:00:33 +00:00 
			
		
		
		
	Compare commits
	
		
			7 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | d35c59abb0 | ||
|   | 29694d72cd | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 78535dd5f2 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | bb65d8857b | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 7f17e836c0 | ||
|   | dca8468d37 | ||
|   | 691cc3533f | 
							
								
								
									
										2
									
								
								.github/ISSUE_TEMPLATE/bug_report.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/ISSUE_TEMPLATE/bug_report.md
									
									
									
									
										vendored
									
									
								
							| @@ -7,7 +7,7 @@ assignees: '' | ||||
|  | ||||
| --- | ||||
|  | ||||
| <!--- Please direct any generic questions related to actions to our support community forum at https://github.community/c/code-to-cloud/github-actions/41 ---> | ||||
| <!--- Please direct any generic questions related to actions to our support community forum at https://github.com/orgs/community/discussions/categories/actions ---> | ||||
| <!--- Before opening up a new bug report, please make sure to check for similar existing issues --> | ||||
|  | ||||
| **Description:** | ||||
|   | ||||
							
								
								
									
										2
									
								
								.github/ISSUE_TEMPLATE/feature_request.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/ISSUE_TEMPLATE/feature_request.md
									
									
									
									
										vendored
									
									
								
							| @@ -5,7 +5,7 @@ title: '' | ||||
| labels: feature request, needs triage | ||||
| assignees: '' | ||||
| --- | ||||
| <!--- Please direct any generic questions related to actions to our support community forum at https://github.community/c/code-to-cloud/github-actions/41 ---> | ||||
| <!--- Please direct any generic questions related to actions to our support community forum at https://github.com/orgs/community/discussions/categories/actions ---> | ||||
| <!--- Before opening up a new feature request, please make sure to check for similar existing issues and pull requests --> | ||||
|  | ||||
| **Description:** | ||||
|   | ||||
							
								
								
									
										2
									
								
								.licenses/npm/@actions/cache.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.licenses/npm/@actions/cache.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| --- | ||||
| name: "@actions/cache" | ||||
| version: 4.0.2 | ||||
| version: 4.0.3 | ||||
| type: npm | ||||
| summary: Actions cache lib | ||||
| homepage: https://github.com/actions/toolkit/tree/main/packages/cache | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| --- | ||||
| name: "@actions/glob" | ||||
| version: 0.4.0 | ||||
| version: 0.5.0 | ||||
| type: npm | ||||
| summary: Actions glob lib | ||||
| homepage: https://github.com/actions/toolkit/tree/main/packages/glob | ||||
| @@ -1,6 +1,6 @@ | ||||
| --- | ||||
| name: semver | ||||
| version: 7.6.3 | ||||
| version: 7.7.1 | ||||
| type: npm | ||||
| summary: The semantic version parser used by npm. | ||||
| homepage: | ||||
							
								
								
									
										52
									
								
								__tests__/utils.test.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								__tests__/utils.test.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,52 @@ | ||||
| import {isSelfHosted} from '../src/utils'; | ||||
|  | ||||
| describe('utils', () => { | ||||
|   describe('isSelfHosted', () => { | ||||
|     let AGENT_ISSELFHOSTED: string | undefined; | ||||
|     let RUNNER_ENVIRONMENT: string | undefined; | ||||
|  | ||||
|     beforeEach(() => { | ||||
|       AGENT_ISSELFHOSTED = process.env['AGENT_ISSELFHOSTED']; | ||||
|       delete process.env['AGENT_ISSELFHOSTED']; | ||||
|       RUNNER_ENVIRONMENT = process.env['RUNNER_ENVIRONMENT']; | ||||
|       delete process.env['RUNNER_ENVIRONMENT']; | ||||
|     }); | ||||
|  | ||||
|     afterEach(() => { | ||||
|       if (AGENT_ISSELFHOSTED === undefined) { | ||||
|         delete process.env['AGENT_ISSELFHOSTED']; | ||||
|       } else { | ||||
|         process.env['AGENT_ISSELFHOSTED'] = AGENT_ISSELFHOSTED; | ||||
|       } | ||||
|       if (RUNNER_ENVIRONMENT === undefined) { | ||||
|         delete process.env['RUNNER_ENVIRONMENT']; | ||||
|       } else { | ||||
|         process.env['RUNNER_ENVIRONMENT'] = RUNNER_ENVIRONMENT; | ||||
|       } | ||||
|     }); | ||||
|  | ||||
|     it('isSelfHosted should be true if no environment variables set', () => { | ||||
|       expect(isSelfHosted()).toBeTruthy(); | ||||
|     }); | ||||
|  | ||||
|     it('isSelfHosted should be true if environment variable is not set to denote GitHub hosted', () => { | ||||
|       process.env['RUNNER_ENVIRONMENT'] = 'some'; | ||||
|       expect(isSelfHosted()).toBeTruthy(); | ||||
|     }); | ||||
|  | ||||
|     it('isSelfHosted should be true if environment variable set to denote Azure Pipelines self hosted', () => { | ||||
|       process.env['AGENT_ISSELFHOSTED'] = '1'; | ||||
|       expect(isSelfHosted()).toBeTruthy(); | ||||
|     }); | ||||
|  | ||||
|     it('isSelfHosted should be false if environment variable set to denote GitHub hosted', () => { | ||||
|       process.env['RUNNER_ENVIRONMENT'] = 'github-hosted'; | ||||
|       expect(isSelfHosted()).toBeFalsy(); | ||||
|     }); | ||||
|  | ||||
|     it('isSelfHosted should be false if environment variable is not set to denote Azure Pipelines self hosted', () => { | ||||
|       process.env['AGENT_ISSELFHOSTED'] = 'some'; | ||||
|       expect(isSelfHosted()).toBeFalsy(); | ||||
|     }); | ||||
|   }); | ||||
| }); | ||||
							
								
								
									
										87
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										87
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							| @@ -220,7 +220,7 @@ function restoreCacheV2(paths, primaryKey, restoreKeys, options, enableCrossOsAr | ||||
|             }; | ||||
|             const response = yield twirpClient.GetCacheEntryDownloadURL(request); | ||||
|             if (!response.ok) { | ||||
|                 core.debug(`Cache not found for keys: ${keys.join(', ')}`); | ||||
|                 core.debug(`Cache not found for version ${request.version} of keys: ${keys.join(', ')}`); | ||||
|                 return undefined; | ||||
|             } | ||||
|             core.info(`Cache hit for: ${request.key}`); | ||||
| @@ -2204,6 +2204,7 @@ const cacheUtils_1 = __nccwpck_require__(1518); | ||||
| const auth_1 = __nccwpck_require__(5526); | ||||
| const http_client_1 = __nccwpck_require__(6255); | ||||
| const cache_twirp_client_1 = __nccwpck_require__(2655); | ||||
| const util_1 = __nccwpck_require__(1953); | ||||
| /** | ||||
|  * This class is a wrapper around the CacheServiceClientJSON class generated by Twirp. | ||||
|  * | ||||
| @@ -2263,6 +2264,7 @@ class CacheServiceClient { | ||||
|                     (0, core_1.debug)(`[Response] - ${response.message.statusCode}`); | ||||
|                     (0, core_1.debug)(`Headers: ${JSON.stringify(response.message.headers, null, 2)}`); | ||||
|                     const body = JSON.parse(rawBody); | ||||
|                     (0, util_1.maskSecretUrls)(body); | ||||
|                     (0, core_1.debug)(`Body: ${JSON.stringify(body, null, 2)}`); | ||||
|                     if (this.isSuccessStatusCode(statusCode)) { | ||||
|                         return { response, body }; | ||||
| @@ -2444,6 +2446,87 @@ exports.getUserAgentString = getUserAgentString; | ||||
| 
 | ||||
| /***/ }), | ||||
| 
 | ||||
| /***/ 1953: | ||||
| /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { | ||||
| 
 | ||||
| "use strict"; | ||||
| 
 | ||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||
| exports.maskSecretUrls = exports.maskSigUrl = void 0; | ||||
| const core_1 = __nccwpck_require__(2186); | ||||
| /** | ||||
|  * Masks the `sig` parameter in a URL and sets it as a secret. | ||||
|  * | ||||
|  * @param url - The URL containing the signature parameter to mask | ||||
|  * @remarks | ||||
|  * This function attempts to parse the provided URL and identify the 'sig' query parameter. | ||||
|  * If found, it registers both the raw and URL-encoded signature values as secrets using | ||||
|  * the Actions `setSecret` API, which prevents them from being displayed in logs. | ||||
|  * | ||||
|  * The function handles errors gracefully if URL parsing fails, logging them as debug messages. | ||||
|  * | ||||
|  * @example | ||||
|  * ```typescript
 | ||||
|  * // Mask a signature in an Azure SAS token URL
 | ||||
|  * maskSigUrl('https://example.blob.core.windows.net/container/file.txt?sig=abc123&se=2023-01-01'); | ||||
|  * ``` | ||||
|  */ | ||||
| function maskSigUrl(url) { | ||||
|     if (!url) | ||||
|         return; | ||||
|     try { | ||||
|         const parsedUrl = new URL(url); | ||||
|         const signature = parsedUrl.searchParams.get('sig'); | ||||
|         if (signature) { | ||||
|             (0, core_1.setSecret)(signature); | ||||
|             (0, core_1.setSecret)(encodeURIComponent(signature)); | ||||
|         } | ||||
|     } | ||||
|     catch (error) { | ||||
|         (0, core_1.debug)(`Failed to parse URL: ${url} ${error instanceof Error ? error.message : String(error)}`); | ||||
|     } | ||||
| } | ||||
| exports.maskSigUrl = maskSigUrl; | ||||
| /** | ||||
|  * Masks sensitive information in URLs containing signature parameters. | ||||
|  * Currently supports masking 'sig' parameters in the 'signed_upload_url' | ||||
|  * and 'signed_download_url' properties of the provided object. | ||||
|  * | ||||
|  * @param body - The object should contain a signature | ||||
|  * @remarks | ||||
|  * This function extracts URLs from the object properties and calls maskSigUrl | ||||
|  * on each one to redact sensitive signature information. The function doesn't | ||||
|  * modify the original object; it only marks the signatures as secrets for | ||||
|  * logging purposes. | ||||
|  * | ||||
|  * @example | ||||
|  * ```typescript
 | ||||
|  * const responseBody = { | ||||
|  *   signed_upload_url: 'https://blob.core.windows.net/?sig=abc123', | ||||
|  *   signed_download_url: 'https://blob.core/windows.net/?sig=def456' | ||||
|  * }; | ||||
|  * maskSecretUrls(responseBody); | ||||
|  * ``` | ||||
|  */ | ||||
| function maskSecretUrls(body) { | ||||
|     if (typeof body !== 'object' || body === null) { | ||||
|         (0, core_1.debug)('body is not an object or is null'); | ||||
|         return; | ||||
|     } | ||||
|     if ('signed_upload_url' in body && | ||||
|         typeof body.signed_upload_url === 'string') { | ||||
|         maskSigUrl(body.signed_upload_url); | ||||
|     } | ||||
|     if ('signed_download_url' in body && | ||||
|         typeof body.signed_download_url === 'string') { | ||||
|         maskSigUrl(body.signed_download_url); | ||||
|     } | ||||
| } | ||||
| exports.maskSecretUrls = maskSecretUrls; | ||||
| //# sourceMappingURL=util.js.map
 | ||||
| 
 | ||||
| /***/ }), | ||||
| 
 | ||||
| /***/ 6490: | ||||
| /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { | ||||
| 
 | ||||
| @@ -88674,7 +88757,7 @@ module.exports = parseParams | ||||
| /***/ ((module) => { | ||||
| 
 | ||||
| "use strict"; | ||||
| module.exports = JSON.parse('{"name":"@actions/cache","version":"4.0.2","preview":true,"description":"Actions cache lib","keywords":["github","actions","cache"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/cache","license":"MIT","main":"lib/cache.js","types":"lib/cache.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/cache"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"echo \\"Error: run tests from root\\" && exit 1","tsc":"tsc"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.11.1","@actions/exec":"^1.0.1","@actions/glob":"^0.1.0","@actions/http-client":"^2.1.1","@actions/io":"^1.0.1","@azure/abort-controller":"^1.1.0","@azure/ms-rest-js":"^2.6.0","@azure/storage-blob":"^12.13.0","@protobuf-ts/plugin":"^2.9.4","semver":"^6.3.1"},"devDependencies":{"@types/semver":"^6.0.0","typescript":"^5.2.2"}}'); | ||||
| module.exports = JSON.parse('{"name":"@actions/cache","version":"4.0.3","preview":true,"description":"Actions cache lib","keywords":["github","actions","cache"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/cache","license":"MIT","main":"lib/cache.js","types":"lib/cache.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/cache"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"echo \\"Error: run tests from root\\" && exit 1","tsc":"tsc"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.11.1","@actions/exec":"^1.0.1","@actions/glob":"^0.1.0","@actions/http-client":"^2.1.1","@actions/io":"^1.0.1","@azure/abort-controller":"^1.1.0","@azure/ms-rest-js":"^2.6.0","@azure/storage-blob":"^12.13.0","@protobuf-ts/plugin":"^2.9.4","semver":"^6.3.1"},"devDependencies":{"@types/node":"^22.13.9","@types/semver":"^6.0.0","typescript":"^5.2.2"}}'); | ||||
| 
 | ||||
| /***/ }), | ||||
| 
 | ||||
|   | ||||
							
								
								
									
										304
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										304
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							| @@ -220,7 +220,7 @@ function restoreCacheV2(paths, primaryKey, restoreKeys, options, enableCrossOsAr | ||||
|             }; | ||||
|             const response = yield twirpClient.GetCacheEntryDownloadURL(request); | ||||
|             if (!response.ok) { | ||||
|                 core.debug(`Cache not found for keys: ${keys.join(', ')}`); | ||||
|                 core.debug(`Cache not found for version ${request.version} of keys: ${keys.join(', ')}`); | ||||
|                 return undefined; | ||||
|             } | ||||
|             core.info(`Cache hit for: ${request.key}`); | ||||
| @@ -2204,6 +2204,7 @@ const cacheUtils_1 = __nccwpck_require__(1518); | ||||
| const auth_1 = __nccwpck_require__(5526); | ||||
| const http_client_1 = __nccwpck_require__(6255); | ||||
| const cache_twirp_client_1 = __nccwpck_require__(2655); | ||||
| const util_1 = __nccwpck_require__(1953); | ||||
| /** | ||||
|  * This class is a wrapper around the CacheServiceClientJSON class generated by Twirp. | ||||
|  * | ||||
| @@ -2263,6 +2264,7 @@ class CacheServiceClient { | ||||
|                     (0, core_1.debug)(`[Response] - ${response.message.statusCode}`); | ||||
|                     (0, core_1.debug)(`Headers: ${JSON.stringify(response.message.headers, null, 2)}`); | ||||
|                     const body = JSON.parse(rawBody); | ||||
|                     (0, util_1.maskSecretUrls)(body); | ||||
|                     (0, core_1.debug)(`Body: ${JSON.stringify(body, null, 2)}`); | ||||
|                     if (this.isSuccessStatusCode(statusCode)) { | ||||
|                         return { response, body }; | ||||
| @@ -2444,6 +2446,87 @@ exports.getUserAgentString = getUserAgentString; | ||||
| 
 | ||||
| /***/ }), | ||||
| 
 | ||||
| /***/ 1953: | ||||
| /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { | ||||
| 
 | ||||
| "use strict"; | ||||
| 
 | ||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||
| exports.maskSecretUrls = exports.maskSigUrl = void 0; | ||||
| const core_1 = __nccwpck_require__(2186); | ||||
| /** | ||||
|  * Masks the `sig` parameter in a URL and sets it as a secret. | ||||
|  * | ||||
|  * @param url - The URL containing the signature parameter to mask | ||||
|  * @remarks | ||||
|  * This function attempts to parse the provided URL and identify the 'sig' query parameter. | ||||
|  * If found, it registers both the raw and URL-encoded signature values as secrets using | ||||
|  * the Actions `setSecret` API, which prevents them from being displayed in logs. | ||||
|  * | ||||
|  * The function handles errors gracefully if URL parsing fails, logging them as debug messages. | ||||
|  * | ||||
|  * @example | ||||
|  * ```typescript
 | ||||
|  * // Mask a signature in an Azure SAS token URL
 | ||||
|  * maskSigUrl('https://example.blob.core.windows.net/container/file.txt?sig=abc123&se=2023-01-01'); | ||||
|  * ``` | ||||
|  */ | ||||
| function maskSigUrl(url) { | ||||
|     if (!url) | ||||
|         return; | ||||
|     try { | ||||
|         const parsedUrl = new URL(url); | ||||
|         const signature = parsedUrl.searchParams.get('sig'); | ||||
|         if (signature) { | ||||
|             (0, core_1.setSecret)(signature); | ||||
|             (0, core_1.setSecret)(encodeURIComponent(signature)); | ||||
|         } | ||||
|     } | ||||
|     catch (error) { | ||||
|         (0, core_1.debug)(`Failed to parse URL: ${url} ${error instanceof Error ? error.message : String(error)}`); | ||||
|     } | ||||
| } | ||||
| exports.maskSigUrl = maskSigUrl; | ||||
| /** | ||||
|  * Masks sensitive information in URLs containing signature parameters. | ||||
|  * Currently supports masking 'sig' parameters in the 'signed_upload_url' | ||||
|  * and 'signed_download_url' properties of the provided object. | ||||
|  * | ||||
|  * @param body - The object should contain a signature | ||||
|  * @remarks | ||||
|  * This function extracts URLs from the object properties and calls maskSigUrl | ||||
|  * on each one to redact sensitive signature information. The function doesn't | ||||
|  * modify the original object; it only marks the signatures as secrets for | ||||
|  * logging purposes. | ||||
|  * | ||||
|  * @example | ||||
|  * ```typescript
 | ||||
|  * const responseBody = { | ||||
|  *   signed_upload_url: 'https://blob.core.windows.net/?sig=abc123', | ||||
|  *   signed_download_url: 'https://blob.core/windows.net/?sig=def456' | ||||
|  * }; | ||||
|  * maskSecretUrls(responseBody); | ||||
|  * ``` | ||||
|  */ | ||||
| function maskSecretUrls(body) { | ||||
|     if (typeof body !== 'object' || body === null) { | ||||
|         (0, core_1.debug)('body is not an object or is null'); | ||||
|         return; | ||||
|     } | ||||
|     if ('signed_upload_url' in body && | ||||
|         typeof body.signed_upload_url === 'string') { | ||||
|         maskSigUrl(body.signed_upload_url); | ||||
|     } | ||||
|     if ('signed_download_url' in body && | ||||
|         typeof body.signed_download_url === 'string') { | ||||
|         maskSigUrl(body.signed_download_url); | ||||
|     } | ||||
| } | ||||
| exports.maskSecretUrls = maskSecretUrls; | ||||
| //# sourceMappingURL=util.js.map
 | ||||
| 
 | ||||
| /***/ }), | ||||
| 
 | ||||
| /***/ 6490: | ||||
| /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { | ||||
| 
 | ||||
| @@ -7628,7 +7711,7 @@ function hashFiles(patterns, currentWorkspace = '', options, verbose = false) { | ||||
|             followSymbolicLinks = options.followSymbolicLinks; | ||||
|         } | ||||
|         const globber = yield create(patterns, { followSymbolicLinks }); | ||||
|         return internal_hash_files_1.hashFiles(globber, currentWorkspace, verbose); | ||||
|         return (0, internal_hash_files_1.hashFiles)(globber, currentWorkspace, verbose); | ||||
|     }); | ||||
| } | ||||
| exports.hashFiles = hashFiles; | ||||
| @@ -7643,7 +7726,11 @@ exports.hashFiles = hashFiles; | ||||
| 
 | ||||
| var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||||
|     if (k2 === undefined) k2 = k; | ||||
|     Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); | ||||
|     var desc = Object.getOwnPropertyDescriptor(m, k); | ||||
|     if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||||
|       desc = { enumerable: true, get: function() { return m[k]; } }; | ||||
|     } | ||||
|     Object.defineProperty(o, k2, desc); | ||||
| }) : (function(o, m, k, k2) { | ||||
|     if (k2 === undefined) k2 = k; | ||||
|     o[k2] = m[k]; | ||||
| @@ -7656,7 +7743,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? ( | ||||
| var __importStar = (this && this.__importStar) || function (mod) { | ||||
|     if (mod && mod.__esModule) return mod; | ||||
|     var result = {}; | ||||
|     if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||||
|     if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||||
|     __setModuleDefault(result, mod); | ||||
|     return result; | ||||
| }; | ||||
| @@ -7671,7 +7758,8 @@ function getOptions(copy) { | ||||
|         followSymbolicLinks: true, | ||||
|         implicitDescendants: true, | ||||
|         matchDirectories: true, | ||||
|         omitBrokenSymbolicLinks: true | ||||
|         omitBrokenSymbolicLinks: true, | ||||
|         excludeHiddenFiles: false | ||||
|     }; | ||||
|     if (copy) { | ||||
|         if (typeof copy.followSymbolicLinks === 'boolean') { | ||||
| @@ -7690,6 +7778,10 @@ function getOptions(copy) { | ||||
|             result.omitBrokenSymbolicLinks = copy.omitBrokenSymbolicLinks; | ||||
|             core.debug(`omitBrokenSymbolicLinks '${result.omitBrokenSymbolicLinks}'`); | ||||
|         } | ||||
|         if (typeof copy.excludeHiddenFiles === 'boolean') { | ||||
|             result.excludeHiddenFiles = copy.excludeHiddenFiles; | ||||
|             core.debug(`excludeHiddenFiles '${result.excludeHiddenFiles}'`); | ||||
|         } | ||||
|     } | ||||
|     return result; | ||||
| } | ||||
| @@ -7705,7 +7797,11 @@ exports.getOptions = getOptions; | ||||
| 
 | ||||
| var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||||
|     if (k2 === undefined) k2 = k; | ||||
|     Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); | ||||
|     var desc = Object.getOwnPropertyDescriptor(m, k); | ||||
|     if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||||
|       desc = { enumerable: true, get: function() { return m[k]; } }; | ||||
|     } | ||||
|     Object.defineProperty(o, k2, desc); | ||||
| }) : (function(o, m, k, k2) { | ||||
|     if (k2 === undefined) k2 = k; | ||||
|     o[k2] = m[k]; | ||||
| @@ -7718,7 +7814,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? ( | ||||
| var __importStar = (this && this.__importStar) || function (mod) { | ||||
|     if (mod && mod.__esModule) return mod; | ||||
|     var result = {}; | ||||
|     if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||||
|     if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||||
|     __setModuleDefault(result, mod); | ||||
|     return result; | ||||
| }; | ||||
| @@ -7772,19 +7868,21 @@ class DefaultGlobber { | ||||
|         return this.searchPaths.slice(); | ||||
|     } | ||||
|     glob() { | ||||
|         var e_1, _a; | ||||
|         var _a, e_1, _b, _c; | ||||
|         return __awaiter(this, void 0, void 0, function* () { | ||||
|             const result = []; | ||||
|             try { | ||||
|                 for (var _b = __asyncValues(this.globGenerator()), _c; _c = yield _b.next(), !_c.done;) { | ||||
|                     const itemPath = _c.value; | ||||
|                 for (var _d = true, _e = __asyncValues(this.globGenerator()), _f; _f = yield _e.next(), _a = _f.done, !_a; _d = true) { | ||||
|                     _c = _f.value; | ||||
|                     _d = false; | ||||
|                     const itemPath = _c; | ||||
|                     result.push(itemPath); | ||||
|                 } | ||||
|             } | ||||
|             catch (e_1_1) { e_1 = { error: e_1_1 }; } | ||||
|             finally { | ||||
|                 try { | ||||
|                     if (_c && !_c.done && (_a = _b.return)) yield _a.call(_b); | ||||
|                     if (!_d && !_a && (_b = _e.return)) yield _b.call(_e); | ||||
|                 } | ||||
|                 finally { if (e_1) throw e_1.error; } | ||||
|             } | ||||
| @@ -7842,6 +7940,10 @@ class DefaultGlobber { | ||||
|                 if (!stats) { | ||||
|                     continue; | ||||
|                 } | ||||
|                 // Hidden file or directory?
 | ||||
|                 if (options.excludeHiddenFiles && path.basename(item.path).match(/^\./)) { | ||||
|                     continue; | ||||
|                 } | ||||
|                 // Directory
 | ||||
|                 if (stats.isDirectory()) { | ||||
|                     // Matched
 | ||||
| @@ -7947,7 +8049,11 @@ exports.DefaultGlobber = DefaultGlobber; | ||||
| 
 | ||||
| var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||||
|     if (k2 === undefined) k2 = k; | ||||
|     Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); | ||||
|     var desc = Object.getOwnPropertyDescriptor(m, k); | ||||
|     if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||||
|       desc = { enumerable: true, get: function() { return m[k]; } }; | ||||
|     } | ||||
|     Object.defineProperty(o, k2, desc); | ||||
| }) : (function(o, m, k, k2) { | ||||
|     if (k2 === undefined) k2 = k; | ||||
|     o[k2] = m[k]; | ||||
| @@ -7960,7 +8066,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? ( | ||||
| var __importStar = (this && this.__importStar) || function (mod) { | ||||
|     if (mod && mod.__esModule) return mod; | ||||
|     var result = {}; | ||||
|     if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||||
|     if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||||
|     __setModuleDefault(result, mod); | ||||
|     return result; | ||||
| }; | ||||
| @@ -7989,19 +8095,21 @@ const stream = __importStar(__nccwpck_require__(2781)); | ||||
| const util = __importStar(__nccwpck_require__(3837)); | ||||
| const path = __importStar(__nccwpck_require__(1017)); | ||||
| function hashFiles(globber, currentWorkspace, verbose = false) { | ||||
|     var e_1, _a; | ||||
|     var _b; | ||||
|     var _a, e_1, _b, _c; | ||||
|     var _d; | ||||
|     return __awaiter(this, void 0, void 0, function* () { | ||||
|         const writeDelegate = verbose ? core.info : core.debug; | ||||
|         let hasMatch = false; | ||||
|         const githubWorkspace = currentWorkspace | ||||
|             ? currentWorkspace | ||||
|             : (_b = process.env['GITHUB_WORKSPACE']) !== null && _b !== void 0 ? _b : process.cwd(); | ||||
|             : (_d = process.env['GITHUB_WORKSPACE']) !== null && _d !== void 0 ? _d : process.cwd(); | ||||
|         const result = crypto.createHash('sha256'); | ||||
|         let count = 0; | ||||
|         try { | ||||
|             for (var _c = __asyncValues(globber.globGenerator()), _d; _d = yield _c.next(), !_d.done;) { | ||||
|                 const file = _d.value; | ||||
|             for (var _e = true, _f = __asyncValues(globber.globGenerator()), _g; _g = yield _f.next(), _a = _g.done, !_a; _e = true) { | ||||
|                 _c = _g.value; | ||||
|                 _e = false; | ||||
|                 const file = _c; | ||||
|                 writeDelegate(file); | ||||
|                 if (!file.startsWith(`${githubWorkspace}${path.sep}`)) { | ||||
|                     writeDelegate(`Ignore '${file}' since it is not under GITHUB_WORKSPACE.`); | ||||
| @@ -8024,7 +8132,7 @@ function hashFiles(globber, currentWorkspace, verbose = false) { | ||||
|         catch (e_1_1) { e_1 = { error: e_1_1 }; } | ||||
|         finally { | ||||
|             try { | ||||
|                 if (_d && !_d.done && (_a = _c.return)) yield _a.call(_c); | ||||
|                 if (!_e && !_a && (_b = _f.return)) yield _b.call(_f); | ||||
|             } | ||||
|             finally { if (e_1) throw e_1.error; } | ||||
|         } | ||||
| @@ -8064,7 +8172,7 @@ var MatchKind; | ||||
|     MatchKind[MatchKind["File"] = 2] = "File"; | ||||
|     /** Matched */ | ||||
|     MatchKind[MatchKind["All"] = 3] = "All"; | ||||
| })(MatchKind = exports.MatchKind || (exports.MatchKind = {})); | ||||
| })(MatchKind || (exports.MatchKind = MatchKind = {})); | ||||
| //# sourceMappingURL=internal-match-kind.js.map
 | ||||
| 
 | ||||
| /***/ }), | ||||
| @@ -8076,7 +8184,11 @@ var MatchKind; | ||||
| 
 | ||||
| var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||||
|     if (k2 === undefined) k2 = k; | ||||
|     Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); | ||||
|     var desc = Object.getOwnPropertyDescriptor(m, k); | ||||
|     if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||||
|       desc = { enumerable: true, get: function() { return m[k]; } }; | ||||
|     } | ||||
|     Object.defineProperty(o, k2, desc); | ||||
| }) : (function(o, m, k, k2) { | ||||
|     if (k2 === undefined) k2 = k; | ||||
|     o[k2] = m[k]; | ||||
| @@ -8089,7 +8201,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? ( | ||||
| var __importStar = (this && this.__importStar) || function (mod) { | ||||
|     if (mod && mod.__esModule) return mod; | ||||
|     var result = {}; | ||||
|     if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||||
|     if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||||
|     __setModuleDefault(result, mod); | ||||
|     return result; | ||||
| }; | ||||
| @@ -8139,8 +8251,8 @@ exports.dirname = dirname; | ||||
|  * or `C:` are expanded based on the current working directory. | ||||
|  */ | ||||
| function ensureAbsoluteRoot(root, itemPath) { | ||||
|     assert_1.default(root, `ensureAbsoluteRoot parameter 'root' must not be empty`); | ||||
|     assert_1.default(itemPath, `ensureAbsoluteRoot parameter 'itemPath' must not be empty`); | ||||
|     (0, assert_1.default)(root, `ensureAbsoluteRoot parameter 'root' must not be empty`); | ||||
|     (0, assert_1.default)(itemPath, `ensureAbsoluteRoot parameter 'itemPath' must not be empty`); | ||||
|     // Already rooted
 | ||||
|     if (hasAbsoluteRoot(itemPath)) { | ||||
|         return itemPath; | ||||
| @@ -8150,7 +8262,7 @@ function ensureAbsoluteRoot(root, itemPath) { | ||||
|         // Check for itemPath like C: or C:foo
 | ||||
|         if (itemPath.match(/^[A-Z]:[^\\/]|^[A-Z]:$/i)) { | ||||
|             let cwd = process.cwd(); | ||||
|             assert_1.default(cwd.match(/^[A-Z]:\\/i), `Expected current directory to start with an absolute drive root. Actual '${cwd}'`); | ||||
|             (0, assert_1.default)(cwd.match(/^[A-Z]:\\/i), `Expected current directory to start with an absolute drive root. Actual '${cwd}'`); | ||||
|             // Drive letter matches cwd? Expand to cwd
 | ||||
|             if (itemPath[0].toUpperCase() === cwd[0].toUpperCase()) { | ||||
|                 // Drive only, e.g. C:
 | ||||
| @@ -8175,11 +8287,11 @@ function ensureAbsoluteRoot(root, itemPath) { | ||||
|         // Check for itemPath like \ or \foo
 | ||||
|         else if (normalizeSeparators(itemPath).match(/^\\$|^\\[^\\]/)) { | ||||
|             const cwd = process.cwd(); | ||||
|             assert_1.default(cwd.match(/^[A-Z]:\\/i), `Expected current directory to start with an absolute drive root. Actual '${cwd}'`); | ||||
|             (0, assert_1.default)(cwd.match(/^[A-Z]:\\/i), `Expected current directory to start with an absolute drive root. Actual '${cwd}'`); | ||||
|             return `${cwd[0]}:\\${itemPath.substr(1)}`; | ||||
|         } | ||||
|     } | ||||
|     assert_1.default(hasAbsoluteRoot(root), `ensureAbsoluteRoot parameter 'root' must have an absolute root`); | ||||
|     (0, assert_1.default)(hasAbsoluteRoot(root), `ensureAbsoluteRoot parameter 'root' must have an absolute root`); | ||||
|     // Otherwise ensure root ends with a separator
 | ||||
|     if (root.endsWith('/') || (IS_WINDOWS && root.endsWith('\\'))) { | ||||
|         // Intentionally empty
 | ||||
| @@ -8196,7 +8308,7 @@ exports.ensureAbsoluteRoot = ensureAbsoluteRoot; | ||||
|  * `\\hello\share` and `C:\hello` (and using alternate separator). | ||||
|  */ | ||||
| function hasAbsoluteRoot(itemPath) { | ||||
|     assert_1.default(itemPath, `hasAbsoluteRoot parameter 'itemPath' must not be empty`); | ||||
|     (0, assert_1.default)(itemPath, `hasAbsoluteRoot parameter 'itemPath' must not be empty`); | ||||
|     // Normalize separators
 | ||||
|     itemPath = normalizeSeparators(itemPath); | ||||
|     // Windows
 | ||||
| @@ -8213,7 +8325,7 @@ exports.hasAbsoluteRoot = hasAbsoluteRoot; | ||||
|  * `\`, `\hello`, `\\hello\share`, `C:`, and `C:\hello` (and using alternate separator).
 | ||||
|  */ | ||||
| function hasRoot(itemPath) { | ||||
|     assert_1.default(itemPath, `isRooted parameter 'itemPath' must not be empty`); | ||||
|     (0, assert_1.default)(itemPath, `isRooted parameter 'itemPath' must not be empty`); | ||||
|     // Normalize separators
 | ||||
|     itemPath = normalizeSeparators(itemPath); | ||||
|     // Windows
 | ||||
| @@ -8281,7 +8393,11 @@ exports.safeTrimTrailingSeparator = safeTrimTrailingSeparator; | ||||
| 
 | ||||
| var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||||
|     if (k2 === undefined) k2 = k; | ||||
|     Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); | ||||
|     var desc = Object.getOwnPropertyDescriptor(m, k); | ||||
|     if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||||
|       desc = { enumerable: true, get: function() { return m[k]; } }; | ||||
|     } | ||||
|     Object.defineProperty(o, k2, desc); | ||||
| }) : (function(o, m, k, k2) { | ||||
|     if (k2 === undefined) k2 = k; | ||||
|     o[k2] = m[k]; | ||||
| @@ -8294,7 +8410,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? ( | ||||
| var __importStar = (this && this.__importStar) || function (mod) { | ||||
|     if (mod && mod.__esModule) return mod; | ||||
|     var result = {}; | ||||
|     if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||||
|     if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||||
|     __setModuleDefault(result, mod); | ||||
|     return result; | ||||
| }; | ||||
| @@ -8319,7 +8435,7 @@ class Path { | ||||
|         this.segments = []; | ||||
|         // String
 | ||||
|         if (typeof itemPath === 'string') { | ||||
|             assert_1.default(itemPath, `Parameter 'itemPath' must not be empty`); | ||||
|             (0, assert_1.default)(itemPath, `Parameter 'itemPath' must not be empty`); | ||||
|             // Normalize slashes and trim unnecessary trailing slash
 | ||||
|             itemPath = pathHelper.safeTrimTrailingSeparator(itemPath); | ||||
|             // Not rooted
 | ||||
| @@ -8346,24 +8462,24 @@ class Path { | ||||
|         // Array
 | ||||
|         else { | ||||
|             // Must not be empty
 | ||||
|             assert_1.default(itemPath.length > 0, `Parameter 'itemPath' must not be an empty array`); | ||||
|             (0, assert_1.default)(itemPath.length > 0, `Parameter 'itemPath' must not be an empty array`); | ||||
|             // Each segment
 | ||||
|             for (let i = 0; i < itemPath.length; i++) { | ||||
|                 let segment = itemPath[i]; | ||||
|                 // Must not be empty
 | ||||
|                 assert_1.default(segment, `Parameter 'itemPath' must not contain any empty segments`); | ||||
|                 (0, assert_1.default)(segment, `Parameter 'itemPath' must not contain any empty segments`); | ||||
|                 // Normalize slashes
 | ||||
|                 segment = pathHelper.normalizeSeparators(itemPath[i]); | ||||
|                 // Root segment
 | ||||
|                 if (i === 0 && pathHelper.hasRoot(segment)) { | ||||
|                     segment = pathHelper.safeTrimTrailingSeparator(segment); | ||||
|                     assert_1.default(segment === pathHelper.dirname(segment), `Parameter 'itemPath' root segment contains information for multiple segments`); | ||||
|                     (0, assert_1.default)(segment === pathHelper.dirname(segment), `Parameter 'itemPath' root segment contains information for multiple segments`); | ||||
|                     this.segments.push(segment); | ||||
|                 } | ||||
|                 // All other segments
 | ||||
|                 else { | ||||
|                     // Must not contain slash
 | ||||
|                     assert_1.default(!segment.includes(path.sep), `Parameter 'itemPath' contains unexpected path separators`); | ||||
|                     (0, assert_1.default)(!segment.includes(path.sep), `Parameter 'itemPath' contains unexpected path separators`); | ||||
|                     this.segments.push(segment); | ||||
|                 } | ||||
|             } | ||||
| @@ -8401,7 +8517,11 @@ exports.Path = Path; | ||||
| 
 | ||||
| var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||||
|     if (k2 === undefined) k2 = k; | ||||
|     Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); | ||||
|     var desc = Object.getOwnPropertyDescriptor(m, k); | ||||
|     if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||||
|       desc = { enumerable: true, get: function() { return m[k]; } }; | ||||
|     } | ||||
|     Object.defineProperty(o, k2, desc); | ||||
| }) : (function(o, m, k, k2) { | ||||
|     if (k2 === undefined) k2 = k; | ||||
|     o[k2] = m[k]; | ||||
| @@ -8414,7 +8534,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? ( | ||||
| var __importStar = (this && this.__importStar) || function (mod) { | ||||
|     if (mod && mod.__esModule) return mod; | ||||
|     var result = {}; | ||||
|     if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||||
|     if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||||
|     __setModuleDefault(result, mod); | ||||
|     return result; | ||||
| }; | ||||
| @@ -8502,7 +8622,11 @@ exports.partialMatch = partialMatch; | ||||
| 
 | ||||
| var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||||
|     if (k2 === undefined) k2 = k; | ||||
|     Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); | ||||
|     var desc = Object.getOwnPropertyDescriptor(m, k); | ||||
|     if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||||
|       desc = { enumerable: true, get: function() { return m[k]; } }; | ||||
|     } | ||||
|     Object.defineProperty(o, k2, desc); | ||||
| }) : (function(o, m, k, k2) { | ||||
|     if (k2 === undefined) k2 = k; | ||||
|     o[k2] = m[k]; | ||||
| @@ -8515,7 +8639,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? ( | ||||
| var __importStar = (this && this.__importStar) || function (mod) { | ||||
|     if (mod && mod.__esModule) return mod; | ||||
|     var result = {}; | ||||
|     if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||||
|     if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||||
|     __setModuleDefault(result, mod); | ||||
|     return result; | ||||
| }; | ||||
| @@ -8547,9 +8671,9 @@ class Pattern { | ||||
|         else { | ||||
|             // Convert to pattern
 | ||||
|             segments = segments || []; | ||||
|             assert_1.default(segments.length, `Parameter 'segments' must not empty`); | ||||
|             (0, assert_1.default)(segments.length, `Parameter 'segments' must not empty`); | ||||
|             const root = Pattern.getLiteral(segments[0]); | ||||
|             assert_1.default(root && pathHelper.hasAbsoluteRoot(root), `Parameter 'segments' first element must be a root path`); | ||||
|             (0, assert_1.default)(root && pathHelper.hasAbsoluteRoot(root), `Parameter 'segments' first element must be a root path`); | ||||
|             pattern = new internal_path_1.Path(segments).toString().trim(); | ||||
|             if (patternOrNegate) { | ||||
|                 pattern = `!${pattern}`; | ||||
| @@ -8643,13 +8767,13 @@ class Pattern { | ||||
|      */ | ||||
|     static fixupPattern(pattern, homedir) { | ||||
|         // Empty
 | ||||
|         assert_1.default(pattern, 'pattern cannot be empty'); | ||||
|         (0, assert_1.default)(pattern, 'pattern cannot be empty'); | ||||
|         // Must not contain `.` segment, unless first segment
 | ||||
|         // Must not contain `..` segment
 | ||||
|         const literalSegments = new internal_path_1.Path(pattern).segments.map(x => Pattern.getLiteral(x)); | ||||
|         assert_1.default(literalSegments.every((x, i) => (x !== '.' || i === 0) && x !== '..'), `Invalid pattern '${pattern}'. Relative pathing '.' and '..' is not allowed.`); | ||||
|         (0, assert_1.default)(literalSegments.every((x, i) => (x !== '.' || i === 0) && x !== '..'), `Invalid pattern '${pattern}'. Relative pathing '.' and '..' is not allowed.`); | ||||
|         // Must not contain globs in root, e.g. Windows UNC path \\foo\b*r
 | ||||
|         assert_1.default(!pathHelper.hasRoot(pattern) || literalSegments[0], `Invalid pattern '${pattern}'. Root segment must not contain globs.`); | ||||
|         (0, assert_1.default)(!pathHelper.hasRoot(pattern) || literalSegments[0], `Invalid pattern '${pattern}'. Root segment must not contain globs.`); | ||||
|         // Normalize slashes
 | ||||
|         pattern = pathHelper.normalizeSeparators(pattern); | ||||
|         // Replace leading `.` segment
 | ||||
| @@ -8659,8 +8783,8 @@ class Pattern { | ||||
|         // Replace leading `~` segment
 | ||||
|         else if (pattern === '~' || pattern.startsWith(`~${path.sep}`)) { | ||||
|             homedir = homedir || os.homedir(); | ||||
|             assert_1.default(homedir, 'Unable to determine HOME directory'); | ||||
|             assert_1.default(pathHelper.hasAbsoluteRoot(homedir), `Expected HOME directory to be a rooted path. Actual '${homedir}'`); | ||||
|             (0, assert_1.default)(homedir, 'Unable to determine HOME directory'); | ||||
|             (0, assert_1.default)(pathHelper.hasAbsoluteRoot(homedir), `Expected HOME directory to be a rooted path. Actual '${homedir}'`); | ||||
|             pattern = Pattern.globEscape(homedir) + pattern.substr(1); | ||||
|         } | ||||
|         // Replace relative drive root, e.g. pattern is C: or C:foo
 | ||||
| @@ -60935,7 +61059,7 @@ const testSet = (set, version, options) => { | ||||
| 
 | ||||
| const debug = __nccwpck_require__(427) | ||||
| const { MAX_LENGTH, MAX_SAFE_INTEGER } = __nccwpck_require__(2293) | ||||
| const { safeRe: re, t } = __nccwpck_require__(9523) | ||||
| const { safeRe: re, safeSrc: src, t } = __nccwpck_require__(9523) | ||||
| 
 | ||||
| const parseOptions = __nccwpck_require__(785) | ||||
| const { compareIdentifiers } = __nccwpck_require__(2463) | ||||
| @@ -61111,6 +61235,20 @@ class SemVer { | ||||
|   // preminor will bump the version up to the next minor release, and immediately
 | ||||
|   // down to pre-release. premajor and prepatch work the same way.
 | ||||
|   inc (release, identifier, identifierBase) { | ||||
|     if (release.startsWith('pre')) { | ||||
|       if (!identifier && identifierBase === false) { | ||||
|         throw new Error('invalid increment argument: identifier is empty') | ||||
|       } | ||||
|       // Avoid an invalid semver results
 | ||||
|       if (identifier) { | ||||
|         const r = new RegExp(`^${this.options.loose ? src[t.PRERELEASELOOSE] : src[t.PRERELEASE]}$`) | ||||
|         const match = `-${identifier}`.match(r) | ||||
|         if (!match || match[1] !== identifier) { | ||||
|           throw new Error(`invalid identifier: ${identifier}`) | ||||
|         } | ||||
|       } | ||||
|     } | ||||
| 
 | ||||
|     switch (release) { | ||||
|       case 'premajor': | ||||
|         this.prerelease.length = 0 | ||||
| @@ -61141,6 +61279,12 @@ class SemVer { | ||||
|         } | ||||
|         this.inc('pre', identifier, identifierBase) | ||||
|         break | ||||
|       case 'release': | ||||
|         if (this.prerelease.length === 0) { | ||||
|           throw new Error(`version ${this.raw} is not a prerelease`) | ||||
|         } | ||||
|         this.prerelease.length = 0 | ||||
|         break | ||||
| 
 | ||||
|       case 'major': | ||||
|         // If this is a pre-major version, bump up to the same major version.
 | ||||
| @@ -61184,10 +61328,6 @@ class SemVer { | ||||
|       case 'pre': { | ||||
|         const base = Number(identifierBase) ? 1 : 0 | ||||
| 
 | ||||
|         if (!identifier && identifierBase === false) { | ||||
|           throw new Error('invalid increment argument: identifier is empty') | ||||
|         } | ||||
| 
 | ||||
|         if (this.prerelease.length === 0) { | ||||
|           this.prerelease = [base] | ||||
|         } else { | ||||
| @@ -61446,20 +61586,13 @@ const diff = (version1, version2) => { | ||||
|       return 'major' | ||||
|     } | ||||
| 
 | ||||
|     // Otherwise it can be determined by checking the high version
 | ||||
| 
 | ||||
|     if (highVersion.patch) { | ||||
|       // anything higher than a patch bump would result in the wrong version
 | ||||
|       return 'patch' | ||||
|     } | ||||
| 
 | ||||
|     if (highVersion.minor) { | ||||
|       // anything higher than a minor bump would result in the wrong version
 | ||||
|     // If the main part has no difference
 | ||||
|     if (lowVersion.compareMain(highVersion) === 0) { | ||||
|       if (lowVersion.minor && !lowVersion.patch) { | ||||
|         return 'minor' | ||||
|       } | ||||
| 
 | ||||
|     // bumping major/minor/patch all have same result
 | ||||
|     return 'major' | ||||
|       return 'patch' | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   // add the `pre` prefix if we are going to a prerelease version
 | ||||
| @@ -61966,6 +62099,7 @@ exports = module.exports = {} | ||||
| const re = exports.re = [] | ||||
| const safeRe = exports.safeRe = [] | ||||
| const src = exports.src = [] | ||||
| const safeSrc = exports.safeSrc = [] | ||||
| const t = exports.t = {} | ||||
| let R = 0 | ||||
| 
 | ||||
| @@ -61998,6 +62132,7 @@ const createToken = (name, value, isGlobal) => { | ||||
|   debug(name, index, value) | ||||
|   t[name] = index | ||||
|   src[index] = value | ||||
|   safeSrc[index] = safe | ||||
|   re[index] = new RegExp(value, isGlobal ? 'g' : undefined) | ||||
|   safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined) | ||||
| } | ||||
| @@ -93270,8 +93405,7 @@ function cacheWindowsDir(extPath, tool, version, arch) { | ||||
|         if (os_1.default.platform() !== 'win32') | ||||
|             return false; | ||||
|         // make sure the action runs in the hosted environment
 | ||||
|         if (process.env['RUNNER_ENVIRONMENT'] !== 'github-hosted' && | ||||
|             process.env['AGENT_ISSELFHOSTED'] === '1') | ||||
|         if ((0, utils_1.isSelfHosted)()) | ||||
|             return false; | ||||
|         const defaultToolCacheRoot = process.env['RUNNER_TOOL_CACHE']; | ||||
|         if (!defaultToolCacheRoot) | ||||
| @@ -93341,10 +93475,33 @@ function extractGoArchive(archivePath) { | ||||
|     }); | ||||
| } | ||||
| exports.extractGoArchive = extractGoArchive; | ||||
| function isIToolRelease(obj) { | ||||
|     return (typeof obj === 'object' && | ||||
|         obj !== null && | ||||
|         typeof obj.version === 'string' && | ||||
|         typeof obj.stable === 'boolean' && | ||||
|         Array.isArray(obj.files) && | ||||
|         obj.files.every((file) => typeof file.filename === 'string' && | ||||
|             typeof file.platform === 'string' && | ||||
|             typeof file.arch === 'string' && | ||||
|             typeof file.download_url === 'string')); | ||||
| } | ||||
| function getManifest(auth) { | ||||
|     return __awaiter(this, void 0, void 0, function* () { | ||||
|         try { | ||||
|             return yield getManifestFromRepo(auth); | ||||
|             const manifest = yield getManifestFromRepo(auth); | ||||
|             if (Array.isArray(manifest) && | ||||
|                 manifest.length && | ||||
|                 manifest.every(isIToolRelease)) { | ||||
|                 return manifest; | ||||
|             } | ||||
|             let errorMessage = 'An unexpected error occurred while fetching the manifest.'; | ||||
|             if (typeof manifest === 'object' && | ||||
|                 manifest !== null && | ||||
|                 'message' in manifest) { | ||||
|                 errorMessage = manifest.message; | ||||
|             } | ||||
|             throw new Error(errorMessage); | ||||
|         } | ||||
|         catch (err) { | ||||
|             core.debug('Fetching the manifest via the API failed.'); | ||||
| @@ -93778,12 +93935,21 @@ exports.getArch = getArch; | ||||
| "use strict"; | ||||
| 
 | ||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||
| exports.StableReleaseAlias = void 0; | ||||
| exports.isSelfHosted = exports.StableReleaseAlias = void 0; | ||||
| var StableReleaseAlias; | ||||
| (function (StableReleaseAlias) { | ||||
|     StableReleaseAlias["Stable"] = "stable"; | ||||
|     StableReleaseAlias["OldStable"] = "oldstable"; | ||||
| })(StableReleaseAlias || (exports.StableReleaseAlias = StableReleaseAlias = {})); | ||||
| const isSelfHosted = () => process.env['RUNNER_ENVIRONMENT'] !== 'github-hosted' && | ||||
|     (process.env['AGENT_ISSELFHOSTED'] === '1' || | ||||
|         process.env['AGENT_ISSELFHOSTED'] === undefined); | ||||
| exports.isSelfHosted = isSelfHosted; | ||||
| /* the above is simplified from: | ||||
|     process.env['RUNNER_ENVIRONMENT'] !== 'github-hosted' && process.env['AGENT_ISSELFHOSTED'] === '1' | ||||
|     || | ||||
|     process.env['RUNNER_ENVIRONMENT'] !== 'github-hosted' && process.env['AGENT_ISSELFHOSTED'] === undefined | ||||
| */ | ||||
| 
 | ||||
| 
 | ||||
| /***/ }), | ||||
| @@ -95675,7 +95841,7 @@ module.exports = parseParams | ||||
| /***/ ((module) => { | ||||
| 
 | ||||
| "use strict"; | ||||
| module.exports = JSON.parse('{"name":"@actions/cache","version":"4.0.2","preview":true,"description":"Actions cache lib","keywords":["github","actions","cache"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/cache","license":"MIT","main":"lib/cache.js","types":"lib/cache.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/cache"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"echo \\"Error: run tests from root\\" && exit 1","tsc":"tsc"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.11.1","@actions/exec":"^1.0.1","@actions/glob":"^0.1.0","@actions/http-client":"^2.1.1","@actions/io":"^1.0.1","@azure/abort-controller":"^1.1.0","@azure/ms-rest-js":"^2.6.0","@azure/storage-blob":"^12.13.0","@protobuf-ts/plugin":"^2.9.4","semver":"^6.3.1"},"devDependencies":{"@types/semver":"^6.0.0","typescript":"^5.2.2"}}'); | ||||
| module.exports = JSON.parse('{"name":"@actions/cache","version":"4.0.3","preview":true,"description":"Actions cache lib","keywords":["github","actions","cache"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/cache","license":"MIT","main":"lib/cache.js","types":"lib/cache.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/cache"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"echo \\"Error: run tests from root\\" && exit 1","tsc":"tsc"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.11.1","@actions/exec":"^1.0.1","@actions/glob":"^0.1.0","@actions/http-client":"^2.1.1","@actions/io":"^1.0.1","@azure/abort-controller":"^1.1.0","@azure/ms-rest-js":"^2.6.0","@azure/storage-blob":"^12.13.0","@protobuf-ts/plugin":"^2.9.4","semver":"^6.3.1"},"devDependencies":{"@types/node":"^22.13.9","@types/semver":"^6.0.0","typescript":"^5.2.2"}}'); | ||||
| 
 | ||||
| /***/ }), | ||||
| 
 | ||||
|   | ||||
							
								
								
									
										774
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										774
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										12
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								package.json
									
									
									
									
									
								
							| @@ -25,10 +25,10 @@ | ||||
|   "author": "GitHub", | ||||
|   "license": "MIT", | ||||
|   "dependencies": { | ||||
|     "@actions/cache": "^4.0.2", | ||||
|     "@actions/cache": "^4.0.3", | ||||
|     "@actions/core": "^1.11.1", | ||||
|     "@actions/exec": "^1.1.1", | ||||
|     "@actions/glob": "^0.4.0", | ||||
|     "@actions/glob": "^0.5.0", | ||||
|     "@actions/http-client": "^2.2.1", | ||||
|     "@actions/io": "^1.0.2", | ||||
|     "@actions/tool-cache": "^2.0.1", | ||||
| @@ -38,18 +38,18 @@ | ||||
|     "@types/jest": "^29.5.12", | ||||
|     "@types/node": "^20.11.28", | ||||
|     "@types/semver": "^7.5.8", | ||||
|     "@typescript-eslint/eslint-plugin": "^5.54.0", | ||||
|     "@typescript-eslint/parser": "^5.54.0", | ||||
|     "@typescript-eslint/eslint-plugin": "^8.31.1", | ||||
|     "@typescript-eslint/parser": "^8.31.1", | ||||
|     "@vercel/ncc": "^0.38.1", | ||||
|     "eslint": "^8.57.0", | ||||
|     "eslint-config-prettier": "^10.0.1", | ||||
|     "eslint-plugin-jest": "^27.9.0", | ||||
|     "eslint-plugin-jest": "^28.11.0", | ||||
|     "eslint-plugin-node": "^11.1.0", | ||||
|     "jest": "^29.7.0", | ||||
|     "jest-circus": "^29.7.0", | ||||
|     "nock": "^10.0.6", | ||||
|     "prettier": "^2.8.4", | ||||
|     "ts-jest": "^29.1.2", | ||||
|     "ts-jest": "^29.3.2", | ||||
|     "typescript": "^5.4.2" | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -6,7 +6,7 @@ import * as httpm from '@actions/http-client'; | ||||
| import * as sys from './system'; | ||||
| import fs from 'fs'; | ||||
| import os from 'os'; | ||||
| import {StableReleaseAlias} from './utils'; | ||||
| import {StableReleaseAlias, isSelfHosted} from './utils'; | ||||
|  | ||||
| const MANIFEST_REPO_OWNER = 'actions'; | ||||
| const MANIFEST_REPO_NAME = 'go-versions'; | ||||
| @@ -180,11 +180,7 @@ async function cacheWindowsDir( | ||||
|   if (os.platform() !== 'win32') return false; | ||||
|  | ||||
|   // make sure the action runs in the hosted environment | ||||
|   if ( | ||||
|     process.env['RUNNER_ENVIRONMENT'] !== 'github-hosted' && | ||||
|     process.env['AGENT_ISSELFHOSTED'] === '1' | ||||
|   ) | ||||
|     return false; | ||||
|   if (isSelfHosted()) return false; | ||||
|  | ||||
|   const defaultToolCacheRoot = process.env['RUNNER_TOOL_CACHE']; | ||||
|   if (!defaultToolCacheRoot) return false; | ||||
| @@ -279,11 +275,46 @@ export async function extractGoArchive(archivePath: string): Promise<string> { | ||||
|   return extPath; | ||||
| } | ||||
|  | ||||
| function isIToolRelease(obj: any): obj is tc.IToolRelease { | ||||
|   return ( | ||||
|     typeof obj === 'object' && | ||||
|     obj !== null && | ||||
|     typeof obj.version === 'string' && | ||||
|     typeof obj.stable === 'boolean' && | ||||
|     Array.isArray(obj.files) && | ||||
|     obj.files.every( | ||||
|       (file: any) => | ||||
|         typeof file.filename === 'string' && | ||||
|         typeof file.platform === 'string' && | ||||
|         typeof file.arch === 'string' && | ||||
|         typeof file.download_url === 'string' | ||||
|     ) | ||||
|   ); | ||||
| } | ||||
|  | ||||
| export async function getManifest( | ||||
|   auth: string | undefined | ||||
| ): Promise<tc.IToolRelease[]> { | ||||
|   try { | ||||
|     return await getManifestFromRepo(auth); | ||||
|     const manifest = await getManifestFromRepo(auth); | ||||
|     if ( | ||||
|       Array.isArray(manifest) && | ||||
|       manifest.length && | ||||
|       manifest.every(isIToolRelease) | ||||
|     ) { | ||||
|       return manifest; | ||||
|     } | ||||
|  | ||||
|     let errorMessage = | ||||
|       'An unexpected error occurred while fetching the manifest.'; | ||||
|     if ( | ||||
|       typeof manifest === 'object' && | ||||
|       manifest !== null && | ||||
|       'message' in manifest | ||||
|     ) { | ||||
|       errorMessage = (manifest as {message: string}).message; | ||||
|     } | ||||
|     throw new Error(errorMessage); | ||||
|   } catch (err) { | ||||
|     core.debug('Fetching the manifest via the API failed.'); | ||||
|     if (err instanceof Error) { | ||||
|   | ||||
							
								
								
									
										10
									
								
								src/utils.ts
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								src/utils.ts
									
									
									
									
									
								
							| @@ -2,3 +2,13 @@ export enum StableReleaseAlias { | ||||
|   Stable = 'stable', | ||||
|   OldStable = 'oldstable' | ||||
| } | ||||
|  | ||||
| export const isSelfHosted = (): boolean => | ||||
|   process.env['RUNNER_ENVIRONMENT'] !== 'github-hosted' && | ||||
|   (process.env['AGENT_ISSELFHOSTED'] === '1' || | ||||
|     process.env['AGENT_ISSELFHOSTED'] === undefined); | ||||
| /* the above is simplified from: | ||||
|     process.env['RUNNER_ENVIRONMENT'] !== 'github-hosted' && process.env['AGENT_ISSELFHOSTED'] === '1' | ||||
|     || | ||||
|     process.env['RUNNER_ENVIRONMENT'] !== 'github-hosted' && process.env['AGENT_ISSELFHOSTED'] === undefined | ||||
| */ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user