mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-08 19:18:26 +00:00
refactor: dedupe daemon exec wrappers
This commit is contained in:
32
src/daemon/exec-file.ts
Normal file
32
src/daemon/exec-file.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
import { execFile, type ExecFileOptionsWithStringEncoding } from "node:child_process";
|
||||
|
||||
export type ExecResult = { stdout: string; stderr: string; code: number };
|
||||
|
||||
export async function execFileUtf8(
|
||||
command: string,
|
||||
args: string[],
|
||||
options: Omit<ExecFileOptionsWithStringEncoding, "encoding"> = {},
|
||||
): Promise<ExecResult> {
|
||||
return await new Promise<ExecResult>((resolve) => {
|
||||
execFile(command, args, { ...options, encoding: "utf8" }, (error, stdout, stderr) => {
|
||||
if (!error) {
|
||||
resolve({
|
||||
stdout: String(stdout ?? ""),
|
||||
stderr: String(stderr ?? ""),
|
||||
code: 0,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
const e = error as { code?: unknown; message?: unknown };
|
||||
const stderrText = String(stderr ?? "");
|
||||
resolve({
|
||||
stdout: String(stdout ?? ""),
|
||||
stderr:
|
||||
stderrText ||
|
||||
(typeof e.message === "string" ? e.message : typeof error === "string" ? error : ""),
|
||||
code: typeof e.code === "number" ? e.code : 1,
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user