@ts-dev-tools/core
Version:
TS dev tools Core
32 lines (31 loc) • 966 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.exec = exec;
exports.safeExec = safeExec;
const node_child_process_1 = require("node:child_process");
function getExitCode(error) {
if (!error) {
return 0;
}
return typeof error.code === "number" ? error.code : 1;
}
function exec(cwd, cmd) {
return new Promise((resolve) => {
(0, node_child_process_1.exec)(cmd, { cwd }, (error, stdout, stderr) => {
resolve({
code: getExitCode(error),
error,
stdout: stdout.trim(),
stderr,
});
});
});
}
async function safeExec(cwd, cmd) {
const { code, stderr, stdout } = await exec(cwd, cmd);
if (code !== 0) {
const error = [stderr, stdout].filter((error) => !!error).join("\n");
throw new Error(`An error occurred while executing command "${cmd}": ${error}`);
}
return stdout;
}