fix(windows): use cross-spawn for shim-backed commands (#18010)

This commit is contained in:
Luke Parker
2026-03-19 08:49:16 +10:00
committed by GitHub
parent 8ee939c741
commit 54ed87d53c
11 changed files with 126 additions and 38 deletions
+21
View File
@@ -0,0 +1,21 @@
import type { ChildProcessWithoutNullStreams } from "child_process"
import { Process } from "../util/process"
type Child = Process.Child & ChildProcessWithoutNullStreams
export function spawn(cmd: string, args: string[], opts?: Process.Options): Child
export function spawn(cmd: string, opts?: Process.Options): Child
export function spawn(cmd: string, argsOrOpts?: string[] | Process.Options, opts?: Process.Options) {
const args = Array.isArray(argsOrOpts) ? [...argsOrOpts] : []
const cfg = Array.isArray(argsOrOpts) ? opts : argsOrOpts
const proc = Process.spawn([cmd, ...args], {
...(cfg ?? {}),
stdin: "pipe",
stdout: "pipe",
stderr: "pipe",
}) as Child
if (!proc.stdin || !proc.stdout || !proc.stderr) throw new Error("Process output not available")
return proc
}