mirror of
				https://github.com/actions/setup-node.git
				synced 2025-10-30 23:54:01 +08:00 
			
		
		
		
	Merge pull request #373 from ganta/add-support-for-asdf-format-as-node-version-file
Add support for asdf format as Node.js version file
This commit is contained in:
		
							
								
								
									
										3
									
								
								.github/workflows/versions.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.github/workflows/versions.yml
									
									
									
									
										vendored
									
									
								
							| @@ -92,12 +92,13 @@ jobs: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest] | ||||
|         node-version-file: [.nvmrc, .tool-versions] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v3 | ||||
|       - name: Setup node from node version file | ||||
|         uses: ./ | ||||
|         with: | ||||
|           node-version-file: '__tests__/data/.nvmrc' | ||||
|           node-version-file: '__tests__/data/${{ matrix.node-version-file }}' | ||||
|       - name: Verify node | ||||
|         run: __tests__/verify-node.sh 14 | ||||
|  | ||||
|   | ||||
							
								
								
									
										1
									
								
								__tests__/data/.tool-versions
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								__tests__/data/.tool-versions
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| nodejs 14.0.0 | ||||
| @@ -8,6 +8,7 @@ import fs from 'fs'; | ||||
| import cp from 'child_process'; | ||||
| import osm = require('os'); | ||||
| import path from 'path'; | ||||
| import each from 'jest-each'; | ||||
| import * as main from '../src/main'; | ||||
| import * as auth from '../src/authutil'; | ||||
|  | ||||
| @@ -904,3 +905,23 @@ describe('setup-node', () => { | ||||
|     ); | ||||
|   }); | ||||
| }); | ||||
|  | ||||
| describe('helper methods', () => { | ||||
|   describe('parseNodeVersionFile', () => { | ||||
|     each` | ||||
|       contents                                     | expected | ||||
|       ${'12'}                                      | ${'12'} | ||||
|       ${'12.3'}                                    | ${'12.3'} | ||||
|       ${'12.3.4'}                                  | ${'12.3.4'} | ||||
|       ${'v12.3.4'}                                 | ${'12.3.4'} | ||||
|       ${'lts/erbium'}                              | ${'lts/erbium'} | ||||
|       ${'lts/*'}                                   | ${'lts/*'} | ||||
|       ${'nodejs 12.3.4'}                           | ${'12.3.4'} | ||||
|       ${'ruby 2.3.4\nnodejs 12.3.4\npython 3.4.5'} | ${'12.3.4'} | ||||
|       ${''}                                        | ${''} | ||||
|       ${'unknown format'}                          | ${'unknown format'} | ||||
|     `.it('parses "$contents"', ({contents, expected}) => { | ||||
|       expect(im.parseNodeVersionFile(contents)).toBe(expected); | ||||
|     }); | ||||
|   }); | ||||
| }); | ||||
|   | ||||
| @@ -8,7 +8,7 @@ inputs: | ||||
|   node-version: | ||||
|     description: 'Version Spec of the version to use. Examples: 12.x, 10.15.1, >=10.15.0.' | ||||
|   node-version-file: | ||||
|     description: 'File containing the version Spec of the version to use.  Examples: .nvmrc, .node-version.' | ||||
|     description: 'File containing the version Spec of the version to use.  Examples: .nvmrc, .node-version, .tool-versions.' | ||||
|   architecture: | ||||
|     description: 'Target architecture for Node to use. Examples: x86, x64. Will use system architecture by default.' | ||||
|   check-latest: | ||||
|   | ||||
							
								
								
									
										12
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							| @@ -71768,12 +71768,16 @@ function translateArchToDistUrl(arch) { | ||||
|     } | ||||
| } | ||||
| function parseNodeVersionFile(contents) { | ||||
|     let nodeVersion = contents.trim(); | ||||
|     if (/^v\d/.test(nodeVersion)) { | ||||
|         nodeVersion = nodeVersion.substring(1); | ||||
|     } | ||||
|     var _a; | ||||
|     const found = contents.match(/^(?:nodejs\s+)?v?(?<version>[^\s]+)$/m); | ||||
|     const nodeVersion = (_a = found === null || found === void 0 ? void 0 : found.groups) === null || _a === void 0 ? void 0 : _a.version; | ||||
|     if (nodeVersion) { | ||||
|         return nodeVersion; | ||||
|     } | ||||
|     // In the case of an unknown format,
 | ||||
|     // return as is and evaluate the version separately.
 | ||||
|     return contents.trim(); | ||||
| } | ||||
| exports.parseNodeVersionFile = parseNodeVersionFile; | ||||
| function isLatestSyntax(versionSpec) { | ||||
|     return ['current', 'latest', 'node'].includes(versionSpec); | ||||
|   | ||||
| @@ -56,7 +56,7 @@ steps: | ||||
|  | ||||
| ## Node version file | ||||
|  | ||||
| The `node-version-file` input accepts a path to a file containing the version of Node.js to be used by a project, for example `.nvmrc` or `.node-version`. If both the `node-version` and the `node-version-file` inputs are provided then the `node-version` input is used. | ||||
| The `node-version-file` input accepts a path to a file containing the version of Node.js to be used by a project, for example `.nvmrc`, `.node-version` or `.tool-versions`. If both the `node-version` and the `node-version-file` inputs are provided then the `node-version` input is used. | ||||
| See [supported version syntax](https://github.com/actions/setup-node#supported-version-syntax) | ||||
| > The action will search for the node version file relative to the repository root. | ||||
|  | ||||
|   | ||||
| @@ -495,14 +495,18 @@ function translateArchToDistUrl(arch: string): string { | ||||
| } | ||||
|  | ||||
| export function parseNodeVersionFile(contents: string): string { | ||||
|   let nodeVersion = contents.trim(); | ||||
|   const found = contents.match(/^(?:nodejs\s+)?v?(?<version>[^\s]+)$/m); | ||||
|   const nodeVersion = found?.groups?.version; | ||||
|  | ||||
|   if (/^v\d/.test(nodeVersion)) { | ||||
|     nodeVersion = nodeVersion.substring(1); | ||||
|   } | ||||
|   if (nodeVersion) { | ||||
|     return nodeVersion; | ||||
|   } | ||||
|  | ||||
|   // In the case of an unknown format, | ||||
|   // return as is and evaluate the version separately. | ||||
|   return contents.trim(); | ||||
| } | ||||
|  | ||||
| function isLatestSyntax(versionSpec): boolean { | ||||
|   return ['current', 'latest', 'node'].includes(versionSpec); | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Marko Zivic
					Marko Zivic