mirror of
https://github.com/pnpm/action-setup.git
synced 2026-05-15 06:43:32 +08:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d3bf712ddd | ||
|
|
01da663869 | ||
|
|
624e28f5d0 | ||
|
|
e578e19d19 | ||
|
|
8912a9102a | ||
|
|
26f6d4f2c5 | ||
|
|
903f9c1a6e | ||
|
|
bdf0af2a9d |
119
.github/workflows/test.yaml
vendored
119
.github/workflows/test.yaml
vendored
@@ -129,6 +129,125 @@ jobs:
|
||||
pnpm add is-odd
|
||||
shell: bash
|
||||
|
||||
test_version_respects_request:
|
||||
name: 'Test version input is actually installed (${{ matrix.version }}, ${{ matrix.os }})'
|
||||
# Regression test for #225 / #230: the bootstrap pnpm on PATH was shadowing the self-updated binary,
|
||||
# so a user requesting e.g. `version: 9.15.5` would silently get the bootstrap version.
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os:
|
||||
- ubuntu-latest
|
||||
- macos-latest
|
||||
- windows-latest
|
||||
version:
|
||||
- '9.15.5'
|
||||
- '10.33.0'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
|
||||
|
||||
- name: Run the action
|
||||
uses: ./
|
||||
with:
|
||||
version: ${{ matrix.version }}
|
||||
|
||||
- name: 'Test: exact version installed'
|
||||
run: |
|
||||
required='${{ matrix.version }}'
|
||||
actual="$(pnpm --version)"
|
||||
echo "pnpm version: ${actual}"
|
||||
if [ "${actual}" != "${required}" ]; then
|
||||
echo "Expected pnpm version ${required}, but got ${actual}"
|
||||
exit 1
|
||||
fi
|
||||
shell: bash
|
||||
|
||||
test_bin_dest_output:
|
||||
name: 'Test bin_dest output points to requested version (${{ matrix.version }}, ${{ matrix.os }})'
|
||||
# Regression test for #247: invoking pnpm via the `bin_dest` output returned the
|
||||
# bootstrap version because self-update writes the target to `${bin_dest}/bin/`,
|
||||
# not directly into `${bin_dest}/`.
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os:
|
||||
- ubuntu-latest
|
||||
- macos-latest
|
||||
- windows-latest
|
||||
version:
|
||||
- '9.15.5'
|
||||
- '10.33.2'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
|
||||
|
||||
- id: pnpm
|
||||
name: Run the action
|
||||
uses: ./
|
||||
with:
|
||||
version: ${{ matrix.version }}
|
||||
|
||||
- name: 'Test: bin_dest/pnpm reports requested version'
|
||||
# Pass paths via env, not template interpolation, so Windows
|
||||
# backslashes in `bin_dest` aren't eaten by bash's escape handling.
|
||||
env:
|
||||
BIN_DEST: ${{ steps.pnpm.outputs.bin_dest }}
|
||||
REQUIRED: ${{ matrix.version }}
|
||||
run: |
|
||||
actual="$("$BIN_DEST/pnpm" --version)"
|
||||
echo "pnpm version via bin_dest: ${actual}"
|
||||
if [ "${actual}" != "${REQUIRED}" ]; then
|
||||
echo "Expected pnpm version ${REQUIRED}, but got ${actual}"
|
||||
exit 1
|
||||
fi
|
||||
shell: bash
|
||||
|
||||
test_package_manager_field:
|
||||
name: 'Test packageManager field is respected (${{ matrix.version }}, ${{ matrix.os }})'
|
||||
# Reproduces #227: when `packageManager` is set in package.json and no `version:` input is given,
|
||||
# the action should install the version specified there.
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os:
|
||||
- ubuntu-latest
|
||||
- macos-latest
|
||||
- windows-latest
|
||||
version:
|
||||
- '9.15.5'
|
||||
- '10.33.0'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
|
||||
|
||||
- name: Set up package.json with packageManager field
|
||||
run: echo '{"packageManager":"pnpm@${{ matrix.version }}"}' > package.json
|
||||
shell: bash
|
||||
|
||||
- name: Run the action
|
||||
uses: ./
|
||||
|
||||
- name: 'Test: exact version installed'
|
||||
run: |
|
||||
required='${{ matrix.version }}'
|
||||
actual="$(pnpm --version)"
|
||||
echo "pnpm version: ${actual}"
|
||||
if [ "${actual}" != "${required}" ]; then
|
||||
echo "Expected pnpm version ${required}, but got ${actual}"
|
||||
exit 1
|
||||
fi
|
||||
shell: bash
|
||||
|
||||
test_dev_engines:
|
||||
name: Test with devEngines.packageManager
|
||||
|
||||
|
||||
218
dist/index.js
vendored
218
dist/index.js
vendored
File diff suppressed because one or more lines are too long
@@ -20,9 +20,10 @@ async function main() {
|
||||
async function runMain(inputs: Inputs) {
|
||||
saveState('is_post', 'true')
|
||||
|
||||
await installPnpm(inputs)
|
||||
const binDest = await installPnpm(inputs)
|
||||
if (binDest === undefined) return
|
||||
console.log('Installation Completed!')
|
||||
setOutputs(inputs)
|
||||
setOutputs(inputs, binDest)
|
||||
|
||||
await restoreCache(inputs)
|
||||
|
||||
|
||||
@@ -5,17 +5,18 @@
|
||||
"packages": {
|
||||
"": {
|
||||
"dependencies": {
|
||||
"@pnpm/exe": "11.0.0-rc.2"
|
||||
"@pnpm/exe": "11.0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@pnpm/exe": {
|
||||
"version": "11.0.0-rc.2",
|
||||
"resolved": "https://registry.npmjs.org/@pnpm/exe/-/exe-11.0.0-rc.2.tgz",
|
||||
"integrity": "sha512-EkL8nZApA0wUA7c5hDdbeuyNUkmkDRBn8evxx4O79SMlEX1D6XspEu9EkLmT+sqrHsAwKzHTHsNYwTSOuKavRg==",
|
||||
"version": "11.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@pnpm/exe/-/exe-11.0.4.tgz",
|
||||
"integrity": "sha512-3OwYqbbj1KtuUqoMo5OEkY8nU/WutZ7L5ADFl0bbW9oyqU55U37aDqA3NJNSk28CyszNARfrjerAF2DW2TsV7w==",
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@reflink/reflink": "0.1.19"
|
||||
"@reflink/reflink": "0.1.19",
|
||||
"detect-libc": "^2.0.3"
|
||||
},
|
||||
"bin": {
|
||||
"pn": "pn",
|
||||
@@ -27,18 +28,20 @@
|
||||
"url": "https://opencollective.com/pnpm"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@pnpm/linux-arm64": "11.0.0-rc.2",
|
||||
"@pnpm/linux-x64": "11.0.0-rc.2",
|
||||
"@pnpm/macos-arm64": "11.0.0-rc.2",
|
||||
"@pnpm/macos-x64": "11.0.0-rc.2",
|
||||
"@pnpm/win-arm64": "11.0.0-rc.2",
|
||||
"@pnpm/win-x64": "11.0.0-rc.2"
|
||||
"@pnpm/linux-arm64": "11.0.4",
|
||||
"@pnpm/linux-x64": "11.0.4",
|
||||
"@pnpm/linuxstatic-arm64": "11.0.4",
|
||||
"@pnpm/linuxstatic-x64": "11.0.4",
|
||||
"@pnpm/macos-arm64": "11.0.4",
|
||||
"@pnpm/macos-x64": "11.0.4",
|
||||
"@pnpm/win-arm64": "11.0.4",
|
||||
"@pnpm/win-x64": "11.0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@pnpm/linux-arm64": {
|
||||
"version": "11.0.0-rc.2",
|
||||
"resolved": "https://registry.npmjs.org/@pnpm/linux-arm64/-/linux-arm64-11.0.0-rc.2.tgz",
|
||||
"integrity": "sha512-aw7wUq6ffXAfP7r9ZKa7GQmCoh/2EJcdb5ghkc8cgz0O2RZCmIaHqMV2O049iSAtblANkOu5uhwAZW7DKMJa3A==",
|
||||
"version": "11.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@pnpm/linux-arm64/-/linux-arm64-11.0.4.tgz",
|
||||
"integrity": "sha512-Bz7V2sFypoGHX/t5w/w7jnCw5DCK3C8s5q8whHJJ3iS5kRznX3Q1F4LwSjjy+lsi777fHyNIvD7qtNmdt9IKoA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -52,9 +55,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@pnpm/linux-x64": {
|
||||
"version": "11.0.0-rc.2",
|
||||
"resolved": "https://registry.npmjs.org/@pnpm/linux-x64/-/linux-x64-11.0.0-rc.2.tgz",
|
||||
"integrity": "sha512-aCItGORv4lUjYldScyhd7uxgXQI3s1B1s99u5Eb42KRRC4Q8DAf7dboXbLGk7rQLjx8F9xIiaD7QX7YR8+MWEQ==",
|
||||
"version": "11.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@pnpm/linux-x64/-/linux-x64-11.0.4.tgz",
|
||||
"integrity": "sha512-u0Yn1gytR1vKdPk6fYF500H8ZWQlj0cTuIQPp+5GYVPkMmA5bSw41RNIDPBfjDlE8ERmQWaQcrgmTcmTZ+n22A==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -67,10 +70,48 @@
|
||||
"url": "https://opencollective.com/pnpm"
|
||||
}
|
||||
},
|
||||
"node_modules/@pnpm/linuxstatic-arm64": {
|
||||
"version": "11.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@pnpm/linuxstatic-arm64/-/linuxstatic-arm64-11.0.4.tgz",
|
||||
"integrity": "sha512-0aitEcfhWNXNZhfJGt/kJaRvfcdtJzXZpV+toJN94kfawSJnhuawfnUSXMi/3m0G97HkJc7BH8rOz3sojUKt0g==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"libc": [
|
||||
"musl"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"funding": {
|
||||
"url": "https://opencollective.com/pnpm"
|
||||
}
|
||||
},
|
||||
"node_modules/@pnpm/linuxstatic-x64": {
|
||||
"version": "11.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@pnpm/linuxstatic-x64/-/linuxstatic-x64-11.0.4.tgz",
|
||||
"integrity": "sha512-xDJdeJ7D2YvDBy2/IH9lEqMKiSuZiV8190XKWOgQgxUGGeuW4z3j6Ewpl0S5bXsWuNjAgC+uCKp7Qp3P7cXAvw==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"libc": [
|
||||
"musl"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"funding": {
|
||||
"url": "https://opencollective.com/pnpm"
|
||||
}
|
||||
},
|
||||
"node_modules/@pnpm/macos-arm64": {
|
||||
"version": "11.0.0-rc.2",
|
||||
"resolved": "https://registry.npmjs.org/@pnpm/macos-arm64/-/macos-arm64-11.0.0-rc.2.tgz",
|
||||
"integrity": "sha512-WsLK8St9Hpwp26qqdFVdLdDlJ3CLJVIkcFwP7G9b+HtkPZOx+Z9AGZ8iam1B7HSrf8XomZWlq0vntHDsc2uPTg==",
|
||||
"version": "11.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@pnpm/macos-arm64/-/macos-arm64-11.0.4.tgz",
|
||||
"integrity": "sha512-dNR69jUARtGFuyyLE9VuyxhRUKC8MO/7/xIyAdeIMZAD5ej0Y/Ct0DYCa/FLbgFL1nXaXmp4+gRMfJBkkrKfQQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -84,9 +125,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@pnpm/macos-x64": {
|
||||
"version": "11.0.0-rc.2",
|
||||
"resolved": "https://registry.npmjs.org/@pnpm/macos-x64/-/macos-x64-11.0.0-rc.2.tgz",
|
||||
"integrity": "sha512-hiC0khjWqSu6l25rs52izVhPM+6IVbp89pLRyBMYTe5x2a9iydUsCloPl7E+SuNiZ5cNnG28qj3PDzc5upeH/Q==",
|
||||
"version": "11.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@pnpm/macos-x64/-/macos-x64-11.0.4.tgz",
|
||||
"integrity": "sha512-RfyrxSBajeEU16dZsgFjbdagDV9F4HNCJfbBgm8IbGjL0+J95naM/VmCDLd6S3+1tISeI2MxtcyCxqjKJsD/BA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -100,9 +141,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@pnpm/win-arm64": {
|
||||
"version": "11.0.0-rc.2",
|
||||
"resolved": "https://registry.npmjs.org/@pnpm/win-arm64/-/win-arm64-11.0.0-rc.2.tgz",
|
||||
"integrity": "sha512-+bo8RmPQyPCKq+h1GE/QHJ7Ybt/4bWZLUSgXJQS6UOB7ar56g2g4ii1X5+8htkkdXxS5Uoj2TVqRjKp6hkkAdA==",
|
||||
"version": "11.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@pnpm/win-arm64/-/win-arm64-11.0.4.tgz",
|
||||
"integrity": "sha512-fOQEv8b9KxZlUAxPPXSQQUUIrt2nY24Qwd4RzCPpatacBnsE4JIadlr/B4V5z2zFxmV7FdHr7nYUhv2RqTlY/w==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -116,9 +157,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@pnpm/win-x64": {
|
||||
"version": "11.0.0-rc.2",
|
||||
"resolved": "https://registry.npmjs.org/@pnpm/win-x64/-/win-x64-11.0.0-rc.2.tgz",
|
||||
"integrity": "sha512-srkbMALQgb4taTzKMlwqBZV+JHTh15jN4/FOVOGQ5XadjXdpJOievkvp/m87WankP8MX8th+mJhD9RX/rDOSOw==",
|
||||
"version": "11.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@pnpm/win-x64/-/win-x64-11.0.4.tgz",
|
||||
"integrity": "sha512-pErHAV8m3NZuPSeCmH3senTSHX0nwkH5lLzQSpiFuyt08hq8sqL3jDymT4ri9N7ixPN9RFZghZIiT3h+Croaew==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -189,6 +230,9 @@
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"libc": [
|
||||
"glibc"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -205,6 +249,9 @@
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"libc": [
|
||||
"musl"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -221,6 +268,9 @@
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"libc": [
|
||||
"glibc"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -237,6 +287,9 @@
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"libc": [
|
||||
"musl"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -277,6 +330,15 @@
|
||||
"engines": {
|
||||
"node": ">= 10"
|
||||
}
|
||||
},
|
||||
"node_modules/detect-libc": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
|
||||
"integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
|
||||
"license": "Apache-2.0",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,13 +5,13 @@
|
||||
"packages": {
|
||||
"": {
|
||||
"dependencies": {
|
||||
"pnpm": "11.0.0-rc.2"
|
||||
"pnpm": "11.0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/pnpm": {
|
||||
"version": "11.0.0-rc.2",
|
||||
"resolved": "https://registry.npmjs.org/pnpm/-/pnpm-11.0.0-rc.2.tgz",
|
||||
"integrity": "sha512-JkEMwm1mi63d4ToKzyx1ytALgqR3vMHi/mKd1B1reP4/stm7Ujr/951qkfBr6bkKYDJUPzC19zkxI5yCCqXwAQ==",
|
||||
"version": "11.0.4",
|
||||
"resolved": "https://registry.npmjs.org/pnpm/-/pnpm-11.0.4.tgz",
|
||||
"integrity": "sha512-CjlxZQB6AU7VKRmmHl9GxIubyohATDA+yuzGP2Le9WOJjTxril1epYEes5jP4DqwXaGlzpY/Em1erUwC+TuDww==",
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
"pn": "bin/pnpm.mjs",
|
||||
|
||||
@@ -4,13 +4,15 @@ import runSelfInstaller from './run'
|
||||
|
||||
export { runSelfInstaller }
|
||||
|
||||
export async function install(inputs: Inputs) {
|
||||
export async function install(inputs: Inputs): Promise<string | undefined> {
|
||||
startGroup('Running self-installer...')
|
||||
const status = await runSelfInstaller(inputs)
|
||||
const { exitCode, binDest } = await runSelfInstaller(inputs)
|
||||
endGroup()
|
||||
if (status) {
|
||||
return setFailed(`Something went wrong, self-installer exits with code ${status}`)
|
||||
if (exitCode) {
|
||||
setFailed(`Something went wrong, self-installer exits with code ${exitCode}`)
|
||||
return undefined
|
||||
}
|
||||
return binDest
|
||||
}
|
||||
|
||||
export default install
|
||||
|
||||
@@ -12,7 +12,12 @@ import exeLock from './bootstrap/exe-lock.json'
|
||||
const BOOTSTRAP_PNPM_PACKAGE_JSON = JSON.stringify({ private: true, dependencies: { pnpm: pnpmLock.packages['node_modules/pnpm'].version } })
|
||||
const BOOTSTRAP_EXE_PACKAGE_JSON = JSON.stringify({ private: true, dependencies: { '@pnpm/exe': exeLock.packages['node_modules/@pnpm/exe'].version } })
|
||||
|
||||
export async function runSelfInstaller(inputs: Inputs): Promise<number> {
|
||||
export interface SelfInstallerResult {
|
||||
exitCode: number
|
||||
binDest: string
|
||||
}
|
||||
|
||||
export async function runSelfInstaller(inputs: Inputs): Promise<SelfInstallerResult> {
|
||||
const { version, dest, packageJsonFile } = inputs
|
||||
|
||||
// pnpm v11 requires Node >= 22.13; use standalone (exe) bootstrap which
|
||||
@@ -29,9 +34,23 @@ export async function runSelfInstaller(inputs: Inputs): Promise<number> {
|
||||
await writeFile(path.join(dest, 'package.json'), packageJson)
|
||||
await writeFile(path.join(dest, 'package-lock.json'), JSON.stringify(lockfile))
|
||||
|
||||
const npmExitCode = await runCommand('npm', ['ci'], { cwd: dest })
|
||||
// Append the action's node directory to PATH so npm's
|
||||
// `#!/usr/bin/env node` shebang resolves on runners (e.g. GHE
|
||||
// self-hosted) where node isn't already on PATH. Append (not
|
||||
// prepend) so a user-installed toolchain on PATH — e.g. from a
|
||||
// prior `setup-node` step — keeps precedence; otherwise the
|
||||
// runner-bundled node would shadow it and pair the user's npm
|
||||
// with a mismatched node version. npm itself is resolved via
|
||||
// PATH — on the GitHub Actions runner it is not co-located with
|
||||
// `process.execPath`.
|
||||
const nodeDir = path.dirname(process.execPath)
|
||||
// On Windows, the PATH key casing varies; search case-insensitively.
|
||||
const pathKey = Object.keys(process.env).find(k => k.toUpperCase() === 'PATH') ?? 'PATH'
|
||||
const currentPath = process.env[pathKey]
|
||||
const npmEnv = { ...process.env, [pathKey]: currentPath ? currentPath + path.delimiter + nodeDir : nodeDir }
|
||||
const npmExitCode = await runCommand('npm', ['ci'], { cwd: dest, env: npmEnv })
|
||||
if (npmExitCode !== 0) {
|
||||
return npmExitCode
|
||||
return { exitCode: npmExitCode, binDest: path.join(dest, 'node_modules', '.bin') }
|
||||
}
|
||||
|
||||
// On Windows with standalone mode, npm's .bin shims can't properly
|
||||
@@ -73,11 +92,18 @@ export async function runSelfInstaller(inputs: Inputs): Promise<number> {
|
||||
const args = standalone ? ['self-update', targetVersion] : [bootstrapPnpm, 'self-update', targetVersion]
|
||||
const exitCode = await runCommand(cmd, args, { cwd: dest })
|
||||
if (exitCode !== 0) {
|
||||
return exitCode
|
||||
return { exitCode, binDest: pnpmHome }
|
||||
}
|
||||
// self-update writes the target pnpm/pnpx into PNPM_HOME/bin, leaving
|
||||
// the bootstrap symlinks in pnpmHome pointing at the old version. Use
|
||||
// PNPM_HOME/bin so consumers of the bin_dest output (e.g.
|
||||
// `${steps.pnpm.outputs.bin_dest}/pnpm`) invoke the requested version.
|
||||
return { exitCode: 0, binDest: path.join(pnpmHome, 'bin') }
|
||||
}
|
||||
|
||||
return 0
|
||||
// No explicit target version: rely on the bootstrap pnpm to switch to
|
||||
// the version declared in packageManager/devEngines at runtime.
|
||||
return { exitCode: 0, binDest: pnpmHome }
|
||||
}
|
||||
|
||||
function readTargetVersion(opts: {
|
||||
@@ -155,10 +181,11 @@ function getSystemNodeVersion(): Promise<{ major: number; minor: number }> {
|
||||
})
|
||||
}
|
||||
|
||||
function runCommand(cmd: string, args: string[], opts: { cwd: string }): Promise<number> {
|
||||
function runCommand(cmd: string, args: string[], opts: { cwd: string; env?: Record<string, string | undefined> }): Promise<number> {
|
||||
return new Promise<number>((resolve, reject) => {
|
||||
const cp = spawn(cmd, args, {
|
||||
cwd: opts.cwd,
|
||||
env: opts.env,
|
||||
stdio: ['pipe', 'inherit', 'inherit'],
|
||||
shell: process.platform === 'win32',
|
||||
})
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
import { setOutput } from '@actions/core'
|
||||
import { Inputs } from '../inputs'
|
||||
import { getBinDest } from '../utils'
|
||||
|
||||
export function setOutputs(inputs: Inputs) {
|
||||
const binDest = getBinDest(inputs)
|
||||
export function setOutputs(inputs: Inputs, binDest: string) {
|
||||
// NOTE: addPath is already called in installPnpm — do not call it again
|
||||
// here, as a second addPath would shadow the correct entry on Windows.
|
||||
setOutput('dest', inputs.dest)
|
||||
|
||||
Reference in New Issue
Block a user