mirror of
				https://github.com/actions/setup-node.git
				synced 2025-11-01 00:23:59 +08:00 
			
		
		
		
	get manifest once
This commit is contained in:
		
							
								
								
									
										32
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										32
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							| @@ -62339,20 +62339,24 @@ const tc = __importStar(__webpack_require__(533)); | |||||||
| const path = __importStar(__webpack_require__(622)); | const path = __importStar(__webpack_require__(622)); | ||||||
| const semver = __importStar(__webpack_require__(280)); | const semver = __importStar(__webpack_require__(280)); | ||||||
| const fs = __webpack_require__(747); | const fs = __webpack_require__(747); | ||||||
| const installer = __importStar(__webpack_require__(923)); |  | ||||||
| function getNode(versionSpec, stable, checkLatest, auth, arch = os.arch()) { | function getNode(versionSpec, stable, checkLatest, auth, arch = os.arch()) { | ||||||
|     return __awaiter(this, void 0, void 0, function* () { |     return __awaiter(this, void 0, void 0, function* () { | ||||||
|         // Store manifest data to avoid multiple calls
 |         // Store manifest data to avoid multiple calls
 | ||||||
|         let manifest; |         let manifest; | ||||||
|  |         let distManifest; | ||||||
|         let osPlat = os.platform(); |         let osPlat = os.platform(); | ||||||
|         let osArch = translateArchToDistUrl(arch); |         let osArch = translateArchToDistUrl(arch); | ||||||
|         let latestVersionResolved = false; |  | ||||||
|         if (isLtsAlias(versionSpec)) { |         if (isLtsAlias(versionSpec)) { | ||||||
|             core.info('Attempt to resolve LTS alias from manifest...'); |             core.info('Attempt to resolve LTS alias from manifest...'); | ||||||
|             // No try-catch since it's not possible to resolve LTS alias without manifest
 |             // No try-catch since it's not possible to resolve LTS alias without manifest
 | ||||||
|             manifest = yield getManifest(auth); |             manifest = yield getManifest(auth); | ||||||
|             versionSpec = resolveLtsAliasFromManifest(versionSpec, stable, manifest); |             versionSpec = resolveLtsAliasFromManifest(versionSpec, stable, manifest); | ||||||
|         } |         } | ||||||
|  |         if (isLatestSyntax(versionSpec)) { | ||||||
|  |             distManifest = yield getVersionsFromDist(); | ||||||
|  |             versionSpec = yield queryDistForMatch(versionSpec, arch, distManifest); | ||||||
|  |             core.info(`getting latest node version...`); | ||||||
|  |         } | ||||||
|         if (checkLatest) { |         if (checkLatest) { | ||||||
|             core.info('Attempt to resolve the latest version from manifest...'); |             core.info('Attempt to resolve the latest version from manifest...'); | ||||||
|             const resolvedVersion = yield resolveVersionFromManifest(versionSpec, stable, auth, osArch, manifest); |             const resolvedVersion = yield resolveVersionFromManifest(versionSpec, stable, auth, osArch, manifest); | ||||||
| @@ -62364,11 +62368,6 @@ function getNode(versionSpec, stable, checkLatest, auth, arch = os.arch()) { | |||||||
|                 core.info(`Failed to resolve version ${versionSpec} from manifest`); |                 core.info(`Failed to resolve version ${versionSpec} from manifest`); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         if (isLatestSyntax(versionSpec)) { |  | ||||||
|             versionSpec = yield queryDistForMatch(versionSpec, arch); |  | ||||||
|             latestVersionResolved = true; |  | ||||||
|             core.info(`getting latest node version...`); |  | ||||||
|         } |  | ||||||
|         // check cache
 |         // check cache
 | ||||||
|         let toolPath; |         let toolPath; | ||||||
|         toolPath = tc.find('node', versionSpec, osArch); |         toolPath = tc.find('node', versionSpec, osArch); | ||||||
| @@ -62409,7 +62408,7 @@ function getNode(versionSpec, stable, checkLatest, auth, arch = os.arch()) { | |||||||
|             // Download from nodejs.org
 |             // Download from nodejs.org
 | ||||||
|             //
 |             //
 | ||||||
|             if (!downloadPath) { |             if (!downloadPath) { | ||||||
|                 info = yield getInfoFromDist(versionSpec, arch, latestVersionResolved); |                 info = yield getInfoFromDist(versionSpec, arch, distManifest); | ||||||
|                 if (!info) { |                 if (!info) { | ||||||
|                     throw new Error(`Unable to find Node version '${versionSpec}' for platform ${osPlat} and architecture ${osArch}.`); |                     throw new Error(`Unable to find Node version '${versionSpec}' for platform ${osPlat} and architecture ${osArch}.`); | ||||||
|                 } |                 } | ||||||
| @@ -62509,13 +62508,11 @@ function getInfoFromManifest(versionSpec, stable, auth, osArch = translateArchTo | |||||||
|         return info; |         return info; | ||||||
|     }); |     }); | ||||||
| } | } | ||||||
| function getInfoFromDist(versionSpec, arch = os.arch(), latestVersionResolved) { | function getInfoFromDist(versionSpec, arch = os.arch(), distManifest) { | ||||||
|     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(arch); |         let osArch = translateArchToDistUrl(arch); | ||||||
|         let version = latestVersionResolved |         let version = yield queryDistForMatch(versionSpec, arch, distManifest); | ||||||
|             ? versionSpec |  | ||||||
|             : yield queryDistForMatch(versionSpec, arch); |  | ||||||
|         if (!version) { |         if (!version) { | ||||||
|             return null; |             return null; | ||||||
|         } |         } | ||||||
| @@ -62574,7 +62571,7 @@ function evaluateVersions(versions, versionSpec) { | |||||||
|     } |     } | ||||||
|     return version; |     return version; | ||||||
| } | } | ||||||
| function queryDistForMatch(versionSpec, arch = os.arch()) { | function queryDistForMatch(versionSpec, arch = os.arch(), distManifest) { | ||||||
|     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(arch); |         let osArch = translateArchToDistUrl(arch); | ||||||
| @@ -62593,13 +62590,16 @@ function queryDistForMatch(versionSpec, arch = os.arch()) { | |||||||
|             default: |             default: | ||||||
|                 throw new Error(`Unexpected OS '${osPlat}'`); |                 throw new Error(`Unexpected OS '${osPlat}'`); | ||||||
|         } |         } | ||||||
|  |         if (!distManifest) { | ||||||
|  |             core.debug('No dist manifest cached'); | ||||||
|  |             distManifest = yield getVersionsFromDist(); | ||||||
|  |         } | ||||||
|         let versions = []; |         let versions = []; | ||||||
|         let nodeVersions = yield installer.getVersionsFromDist(); |  | ||||||
|         if (isLatestSyntax(versionSpec)) { |         if (isLatestSyntax(versionSpec)) { | ||||||
|             core.info(`getting latest node version...`); |             core.info(`getting latest node version...`); | ||||||
|             return nodeVersions[0].version; |             return distManifest[0].version; | ||||||
|         } |         } | ||||||
|         nodeVersions.forEach((nodeVersion) => { |         distManifest.forEach((nodeVersion) => { | ||||||
|             // ensure this version supports your os and platform
 |             // ensure this version supports your os and platform
 | ||||||
|             if (nodeVersion.files.indexOf(dataFileName) >= 0) { |             if (nodeVersion.files.indexOf(dataFileName) >= 0) { | ||||||
|                 versions.push(nodeVersion.version); |                 versions.push(nodeVersion.version); | ||||||
|   | |||||||
| @@ -38,9 +38,9 @@ export async function getNode( | |||||||
| ) { | ) { | ||||||
|   // Store manifest data to avoid multiple calls |   // Store manifest data to avoid multiple calls | ||||||
|   let manifest: INodeRelease[] | undefined; |   let manifest: INodeRelease[] | undefined; | ||||||
|  |   let distManifest: INodeVersion[] | undefined; | ||||||
|   let osPlat: string = os.platform(); |   let osPlat: string = os.platform(); | ||||||
|   let osArch: string = translateArchToDistUrl(arch); |   let osArch: string = translateArchToDistUrl(arch); | ||||||
|   let latestVersionResolved: boolean = false; |  | ||||||
|  |  | ||||||
|   if (isLtsAlias(versionSpec)) { |   if (isLtsAlias(versionSpec)) { | ||||||
|     core.info('Attempt to resolve LTS alias from manifest...'); |     core.info('Attempt to resolve LTS alias from manifest...'); | ||||||
| @@ -51,6 +51,12 @@ export async function getNode( | |||||||
|     versionSpec = resolveLtsAliasFromManifest(versionSpec, stable, manifest); |     versionSpec = resolveLtsAliasFromManifest(versionSpec, stable, manifest); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   if (isLatestSyntax(versionSpec)) { | ||||||
|  |     distManifest = await getVersionsFromDist(); | ||||||
|  |     versionSpec = await queryDistForMatch(versionSpec, arch, distManifest); | ||||||
|  |     core.info(`getting latest node version...`); | ||||||
|  |   } | ||||||
|  |  | ||||||
|   if (checkLatest) { |   if (checkLatest) { | ||||||
|     core.info('Attempt to resolve the latest version from manifest...'); |     core.info('Attempt to resolve the latest version from manifest...'); | ||||||
|     const resolvedVersion = await resolveVersionFromManifest( |     const resolvedVersion = await resolveVersionFromManifest( | ||||||
| @@ -68,12 +74,6 @@ export async function getNode( | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   if (isLatestSyntax(versionSpec)) { |  | ||||||
|     versionSpec = await queryDistForMatch(versionSpec, arch); |  | ||||||
|     latestVersionResolved = true; |  | ||||||
|     core.info(`getting latest node version...`); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   // check cache |   // check cache | ||||||
|   let toolPath: string; |   let toolPath: string; | ||||||
|   toolPath = tc.find('node', versionSpec, osArch); |   toolPath = tc.find('node', versionSpec, osArch); | ||||||
| @@ -127,7 +127,7 @@ export async function getNode( | |||||||
|     // Download from nodejs.org |     // Download from nodejs.org | ||||||
|     // |     // | ||||||
|     if (!downloadPath) { |     if (!downloadPath) { | ||||||
|       info = await getInfoFromDist(versionSpec, arch, latestVersionResolved); |       info = await getInfoFromDist(versionSpec, arch, distManifest); | ||||||
|       if (!info) { |       if (!info) { | ||||||
|         throw new Error( |         throw new Error( | ||||||
|           `Unable to find Node version '${versionSpec}' for platform ${osPlat} and architecture ${osArch}.` |           `Unable to find Node version '${versionSpec}' for platform ${osPlat} and architecture ${osArch}.` | ||||||
| @@ -274,14 +274,16 @@ async function getInfoFromManifest( | |||||||
| async function getInfoFromDist( | async function getInfoFromDist( | ||||||
|   versionSpec: string, |   versionSpec: string, | ||||||
|   arch: string = os.arch(), |   arch: string = os.arch(), | ||||||
|   latestVersionResolved?: boolean |   distManifest?: INodeVersion[] | ||||||
| ): Promise<INodeVersionInfo | null> { | ): Promise<INodeVersionInfo | null> { | ||||||
|   let osPlat: string = os.platform(); |   let osPlat: string = os.platform(); | ||||||
|   let osArch: string = translateArchToDistUrl(arch); |   let osArch: string = translateArchToDistUrl(arch); | ||||||
|  |  | ||||||
|   let version: string = latestVersionResolved |   let version: string = await queryDistForMatch( | ||||||
|     ? versionSpec |     versionSpec, | ||||||
|     : await queryDistForMatch(versionSpec, arch); |     arch, | ||||||
|  |     distManifest | ||||||
|  |   ); | ||||||
|  |  | ||||||
|   if (!version) { |   if (!version) { | ||||||
|     return null; |     return null; | ||||||
| @@ -359,7 +361,8 @@ function evaluateVersions(versions: string[], versionSpec: string): string { | |||||||
|  |  | ||||||
| async function queryDistForMatch( | async function queryDistForMatch( | ||||||
|   versionSpec: string, |   versionSpec: string, | ||||||
|   arch: string = os.arch() |   arch: string = os.arch(), | ||||||
|  |   distManifest?: INodeVersion[] | ||||||
| ): Promise<string> { | ): Promise<string> { | ||||||
|   let osPlat: string = os.platform(); |   let osPlat: string = os.platform(); | ||||||
|   let osArch: string = translateArchToDistUrl(arch); |   let osArch: string = translateArchToDistUrl(arch); | ||||||
| @@ -380,15 +383,19 @@ async function queryDistForMatch( | |||||||
|       throw new Error(`Unexpected OS '${osPlat}'`); |       throw new Error(`Unexpected OS '${osPlat}'`); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   if (!distManifest) { | ||||||
|  |     core.debug('No dist manifest cached'); | ||||||
|  |     distManifest = await getVersionsFromDist(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|   let versions: string[] = []; |   let versions: string[] = []; | ||||||
|   let nodeVersions = await installer.getVersionsFromDist(); |  | ||||||
|  |  | ||||||
|   if (isLatestSyntax(versionSpec)) { |   if (isLatestSyntax(versionSpec)) { | ||||||
|     core.info(`getting latest node version...`); |     core.info(`getting latest node version...`); | ||||||
|     return nodeVersions[0].version; |     return distManifest[0].version; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   nodeVersions.forEach((nodeVersion: INodeVersion) => { |   distManifest.forEach((nodeVersion: INodeVersion) => { | ||||||
|     // ensure this version supports your os and platform |     // ensure this version supports your os and platform | ||||||
|     if (nodeVersion.files.indexOf(dataFileName) >= 0) { |     if (nodeVersion.files.indexOf(dataFileName) >= 0) { | ||||||
|       versions.push(nodeVersion.version); |       versions.push(nodeVersion.version); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 panticmilos
					panticmilos