Add cwd option for command replies

This commit is contained in:
Peter Steinberger
2025-11-25 16:19:13 +01:00
parent 1ef7f4dbad
commit bcbf0de240
5 changed files with 27 additions and 4 deletions

View File

@@ -43,14 +43,26 @@ export type SpawnResult = {
killed: boolean;
};
export type CommandOptions = {
timeoutMs: number;
cwd?: string;
};
export async function runCommandWithTimeout(
argv: string[],
timeoutMs: number,
optionsOrTimeout: number | CommandOptions,
): Promise<SpawnResult> {
const options: CommandOptions =
typeof optionsOrTimeout === "number"
? { timeoutMs: optionsOrTimeout }
: optionsOrTimeout;
const { timeoutMs, cwd } = options;
// Spawn with inherited stdin (TTY) so tools like `claude` don't hang.
return await new Promise((resolve, reject) => {
const child = spawn(argv[0], argv.slice(1), {
stdio: ["inherit", "pipe", "pipe"],
cwd,
});
let stdout = "";
let stderr = "";