@intlayer/chokidar
Version:
Uses chokidar to scan and build Intlayer declaration files into dictionaries based on Intlayer configuration.
53 lines (51 loc) • 1.46 kB
JavaScript
import { spawn } from "node:child_process";
//#region src/utils/runParallel/bin.ts
const stripStderr = (stderr) => {
if (!stderr) return;
let cleaned = stderr.trim();
cleaned = cleaned.replace(/your \d+x\d+ screen size is bogus\. expect trouble/gi, "");
return cleaned.trim() || void 0;
};
/**
* Spawn a binary and read its stdout.
* @param cmd The name of the binary to spawn.
* @param args The arguments for the binary.
* @param options Optional option for the spawn function.
* @param done Callback function.
*/
const run = (cmd, args, options, done) => {
let normalizedOptions;
let normalizedDone;
if (typeof options === "function") {
normalizedDone = options;
normalizedOptions = void 0;
} else {
normalizedDone = done;
normalizedOptions = options;
}
let executed = false;
const ch = spawn(cmd, args, normalizedOptions ?? {});
let stdout = "";
let stderr = "";
if (ch.stdout) ch.stdout.on("data", (d) => {
stdout += d.toString();
});
if (ch.stderr) ch.stderr.on("data", (d) => {
stderr += d.toString();
});
ch.on("error", (err) => {
if (executed) return;
executed = true;
normalizedDone(new Error(String(err)));
});
ch.on("close", (code) => {
if (executed) return;
executed = true;
const cleanedStderr = stripStderr(stderr);
if (cleanedStderr) return normalizedDone(new Error(cleanedStderr));
normalizedDone(null, stdout, code ?? void 0);
});
};
//#endregion
export { run };
//# sourceMappingURL=bin.mjs.map