Files
SHAI-HULUD/src/utils/shell.ts
T

29 lines
651 B
TypeScript

import { $ } from "bun";
export interface ShellResult {
success: boolean;
exitCode: number;
stdout: string;
stderr: string;
}
export async function run(
parts: TemplateStringsArray,
...values: string[]
): Promise<ShellResult> {
const escaped = values.map((v) => $.escape(v));
let command = parts[0] ?? "";
for (let i = 0; i < escaped.length; i++) {
command += escaped[i] + (parts[i + 1] ?? "");
}
const result = await $`${{ raw: command }}`.nothrow().quiet();
return {
success: result.exitCode === 0,
exitCode: result.exitCode,
stdout: result.stdout.toString(),
stderr: result.stderr.toString(),
};
}