forked from anomalyco/opencode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlaunch.ts
More file actions
21 lines (17 loc) · 794 Bytes
/
launch.ts
File metadata and controls
21 lines (17 loc) · 794 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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
}