fix: preserve Windows command paths containing spaces

This commit is contained in:
Zoltan Kochan
2026-11-03 14:55:12 +01:00
parent 73e46992e0
commit e68a094b1a
3 changed files with 163 additions and 131 deletions
+6 -10
View File
@@ -1,4 +1,5 @@
import { addPath, exportVariable } from '@actions/core'
import { exec } from '@actions/exec'
import { spawn } from 'child_process'
import { rm, writeFile, mkdir, symlink } from 'fs/promises'
import { readFileSync, existsSync } from 'fs'
@@ -209,7 +210,7 @@ function targetsPnpm12(version: string): boolean {
function getSystemNodeVersion(): Promise<{ major: number; minor: number }> {
return new Promise((resolve) => {
const cp = spawn('node', ['--version'], { stdio: ['pipe', 'pipe', 'pipe'], shell: process.platform === 'win32' })
const cp = spawn('node', ['--version'], { stdio: ['pipe', 'pipe', 'pipe'] })
let output = ''
cp.stdout.on('data', (data: Buffer) => { output += data.toString() })
cp.on('close', () => {
@@ -221,15 +222,10 @@ function getSystemNodeVersion(): Promise<{ major: number; minor: 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',
})
cp.on('error', reject)
cp.on('close', resolve)
return exec(`"${cmd}"`, args, {
cwd: opts.cwd,
env: opts.env && Object.fromEntries(Object.entries(opts.env).filter((entry): entry is [string, string] => entry[1] !== undefined)),
ignoreReturnCode: true,
})
}