mirror of
https://gitea.com/actions/setup-node.git
synced 2025-07-05 03:43:08 +08:00
Compare commits
10 Commits
tiwarishub
...
v3.4.1
Author | SHA1 | Date | |
---|---|---|---|
2fddd8803e | |||
ad8542ca5e | |||
3d11add771 | |||
072a2e3b10 | |||
28ad38fe06 | |||
48de4c13f6 | |||
aab7cc882a | |||
5b949b50c3 | |||
dbb64ac1d1 | |||
82496765f3 |
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:
|
||||
|
4
dist/cache-save/index.js
vendored
4
dist/cache-save/index.js
vendored
@ -59931,7 +59931,7 @@ exports.supportedPackageManagers = {
|
||||
},
|
||||
pnpm: {
|
||||
lockFilePatterns: ['pnpm-lock.yaml'],
|
||||
getCacheFolderCommand: 'pnpm store path'
|
||||
getCacheFolderCommand: 'pnpm store path --silent'
|
||||
},
|
||||
yarn1: {
|
||||
lockFilePatterns: ['yarn.lock'],
|
||||
@ -59986,7 +59986,7 @@ exports.getCacheDirectoryPath = (packageManagerInfo, packageManager) => __awaite
|
||||
throw new Error(`Could not get cache folder path for ${packageManager}`);
|
||||
}
|
||||
core.debug(`${packageManager} path is ${stdOut}`);
|
||||
return stdOut;
|
||||
return stdOut.trim();
|
||||
});
|
||||
function isGhes() {
|
||||
const ghUrl = new URL(process.env['GITHUB_SERVER_URL'] || 'https://github.com');
|
||||
|
25
dist/setup/index.js
vendored
25
dist/setup/index.js
vendored
@ -71277,7 +71277,7 @@ exports.supportedPackageManagers = {
|
||||
},
|
||||
pnpm: {
|
||||
lockFilePatterns: ['pnpm-lock.yaml'],
|
||||
getCacheFolderCommand: 'pnpm store path'
|
||||
getCacheFolderCommand: 'pnpm store path --silent'
|
||||
},
|
||||
yarn1: {
|
||||
lockFilePatterns: ['yarn.lock'],
|
||||
@ -71332,7 +71332,7 @@ exports.getCacheDirectoryPath = (packageManagerInfo, packageManager) => __awaite
|
||||
throw new Error(`Could not get cache folder path for ${packageManager}`);
|
||||
}
|
||||
core.debug(`${packageManager} path is ${stdOut}`);
|
||||
return stdOut;
|
||||
return stdOut.trim();
|
||||
});
|
||||
function isGhes() {
|
||||
const ghUrl = new URL(process.env['GITHUB_SERVER_URL'] || 'https://github.com');
|
||||
@ -71768,11 +71768,15 @@ 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;
|
||||
}
|
||||
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) {
|
||||
@ -71842,8 +71846,13 @@ function run() {
|
||||
yield installer.getNode(version, stable, checkLatest, auth, arch);
|
||||
}
|
||||
// Output version of node is being used
|
||||
const { stdout: installedVersion } = yield exec.getExecOutput('node', ['--version'], { ignoreReturnCode: true });
|
||||
core.setOutput('node-version', installedVersion);
|
||||
try {
|
||||
const { stdout: installedVersion } = yield exec.getExecOutput('node', ['--version'], { ignoreReturnCode: true, silent: true });
|
||||
core.setOutput('node-version', installedVersion.trim());
|
||||
}
|
||||
catch (err) {
|
||||
core.setOutput('node-version', '');
|
||||
}
|
||||
const registryUrl = core.getInput('registry-url');
|
||||
const alwaysAuth = core.getInput('always-auth');
|
||||
if (registryUrl) {
|
||||
|
@ -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.
|
||||
|
||||
|
@ -18,7 +18,7 @@ export const supportedPackageManagers: SupportedPackageManagers = {
|
||||
},
|
||||
pnpm: {
|
||||
lockFilePatterns: ['pnpm-lock.yaml'],
|
||||
getCacheFolderCommand: 'pnpm store path'
|
||||
getCacheFolderCommand: 'pnpm store path --silent'
|
||||
},
|
||||
yarn1: {
|
||||
lockFilePatterns: ['yarn.lock'],
|
||||
@ -94,7 +94,7 @@ export const getCacheDirectoryPath = async (
|
||||
|
||||
core.debug(`${packageManager} path is ${stdOut}`);
|
||||
|
||||
return stdOut;
|
||||
return stdOut.trim();
|
||||
};
|
||||
|
||||
export function isGhes(): boolean {
|
||||
|
@ -495,12 +495,16 @@ 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;
|
||||
}
|
||||
return nodeVersion;
|
||||
|
||||
// In the case of an unknown format,
|
||||
// return as is and evaluate the version separately.
|
||||
return contents.trim();
|
||||
}
|
||||
|
||||
function isLatestSyntax(versionSpec): boolean {
|
||||
|
16
src/main.ts
16
src/main.ts
@ -41,12 +41,16 @@ export async function run() {
|
||||
}
|
||||
|
||||
// Output version of node is being used
|
||||
const {stdout: installedVersion} = await exec.getExecOutput(
|
||||
'node',
|
||||
['--version'],
|
||||
{ignoreReturnCode: true}
|
||||
);
|
||||
core.setOutput('node-version', installedVersion);
|
||||
try {
|
||||
const {stdout: installedVersion} = await exec.getExecOutput(
|
||||
'node',
|
||||
['--version'],
|
||||
{ignoreReturnCode: true, silent: true}
|
||||
);
|
||||
core.setOutput('node-version', installedVersion.trim());
|
||||
} catch (err) {
|
||||
core.setOutput('node-version', '');
|
||||
}
|
||||
|
||||
const registryUrl: string = core.getInput('registry-url');
|
||||
const alwaysAuth: string = core.getInput('always-auth');
|
||||
|
Reference in New Issue
Block a user