UNPKG

@decaf-ts/fabric-weaver

Version:
42 lines 6 kB
import { spawn, execSync } from "child_process"; import { Logging } from "@decaf-ts/logging"; export async function runCommand(command, args = [], options = { stdio: "inherit" }, logMatch) { const log = Logging.for(runCommand); log.info(`Running command: ${command} ${args.join(" ")}`); if (!logMatch) return execSync([command, ...args].join(" "), options); return new Promise((resolve, reject) => { const child = spawn(command, args, options); let stdoutData = ""; let stderrData = ""; const checkMatch = (data) => { if (logMatch && logMatch.test(data)) { resolve(child); } }; child.stdout.on("data", (data) => { const strData = data.toString(); console.log(strData); stdoutData += strData; checkMatch(strData); }); child.stderr.on("data", (data) => { const strData = data.toString(); console.error(strData); stderrData += strData; checkMatch(strData); }); child.on("error", (err) => { reject(err); }); child.on("close", (code) => { if (code === 0) { resolve(child); } else { reject(new Error(`Process exited with code ${code}\nStdout: ${stdoutData}\nStderr: ${stderrData}`)); } }); }); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpbGQtcHJvY2Vzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9jaGlsZC1wcm9jZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQWdCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQVUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEQsTUFBTSxDQUFDLEtBQUssVUFBVSxVQUFVLENBQzlCLE9BQWUsRUFDZixPQUFpQixFQUFFLEVBQ25CLFVBQXlDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxFQUM3RCxRQUFpQjtJQUVqQixNQUFNLEdBQUcsR0FBVyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzVDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUUxRCxJQUFJLENBQUMsUUFBUTtRQUFFLE9BQU8sUUFBUSxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXRFLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDckMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDNUMsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVwQixNQUFNLFVBQVUsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO1lBQ2xDLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pCLENBQUM7UUFDSCxDQUFDLENBQUM7UUFFRixLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFZLEVBQUUsRUFBRTtZQUN2QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNyQixVQUFVLElBQUksT0FBTyxDQUFDO1lBQ3RCLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztRQUVILEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQVksRUFBRSxFQUFFO1lBQ3ZDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZCLFVBQVUsSUFBSSxPQUFPLENBQUM7WUFDdEIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO1FBRUgsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFVLEVBQUUsRUFBRTtZQUMvQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztRQUVILEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBWSxFQUFFLEVBQUU7WUFDakMsSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLENBQ0osSUFBSSxLQUFLLENBQ1AsNEJBQTRCLElBQUksYUFBYSxVQUFVLGFBQWEsVUFBVSxFQUFFLENBQ2pGLENBQ0YsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNwYXduLCBDaGlsZFByb2Nlc3MsIGV4ZWNTeW5jIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IExvZ2dlciwgTG9nZ2luZyB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuQ29tbWFuZChcbiAgY29tbWFuZDogc3RyaW5nLFxuICBhcmdzOiBzdHJpbmdbXSA9IFtdLFxuICBvcHRpb25zOiB7IFtpbmRleGVyOiBzdHJpbmddOiBzdHJpbmcgfSA9IHsgc3RkaW86IFwiaW5oZXJpdFwiIH0sXG4gIGxvZ01hdGNoPzogUmVnRXhwXG4pOiBQcm9taXNlPENoaWxkUHJvY2VzcyB8IHZvaWQgfCBCdWZmZXI+IHtcbiAgY29uc3QgbG9nOiBMb2dnZXIgPSBMb2dnaW5nLmZvcihydW5Db21tYW5kKTtcbiAgbG9nLmluZm8oYFJ1bm5pbmcgY29tbWFuZDogJHtjb21tYW5kfSAke2FyZ3Muam9pbihcIiBcIil9YCk7XG5cbiAgaWYgKCFsb2dNYXRjaCkgcmV0dXJuIGV4ZWNTeW5jKFtjb21tYW5kLCAuLi5hcmdzXS5qb2luKFwiIFwiKSwgb3B0aW9ucyk7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBjaGlsZCA9IHNwYXduKGNvbW1hbmQsIGFyZ3MsIG9wdGlvbnMpO1xuICAgIGxldCBzdGRvdXREYXRhID0gXCJcIjtcbiAgICBsZXQgc3RkZXJyRGF0YSA9IFwiXCI7XG5cbiAgICBjb25zdCBjaGVja01hdGNoID0gKGRhdGE6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKGxvZ01hdGNoICYmIGxvZ01hdGNoLnRlc3QoZGF0YSkpIHtcbiAgICAgICAgcmVzb2x2ZShjaGlsZCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNoaWxkLnN0ZG91dC5vbihcImRhdGFcIiwgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgY29uc3Qgc3RyRGF0YSA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgIGNvbnNvbGUubG9nKHN0ckRhdGEpO1xuICAgICAgc3Rkb3V0RGF0YSArPSBzdHJEYXRhO1xuICAgICAgY2hlY2tNYXRjaChzdHJEYXRhKTtcbiAgICB9KTtcblxuICAgIGNoaWxkLnN0ZGVyci5vbihcImRhdGFcIiwgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgY29uc3Qgc3RyRGF0YSA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgIGNvbnNvbGUuZXJyb3Ioc3RyRGF0YSk7XG4gICAgICBzdGRlcnJEYXRhICs9IHN0ckRhdGE7XG4gICAgICBjaGVja01hdGNoKHN0ckRhdGEpO1xuICAgIH0pO1xuXG4gICAgY2hpbGQub24oXCJlcnJvclwiLCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgcmVqZWN0KGVycik7XG4gICAgfSk7XG5cbiAgICBjaGlsZC5vbihcImNsb3NlXCIsIChjb2RlOiBudW1iZXIpID0+IHtcbiAgICAgIGlmIChjb2RlID09PSAwKSB7XG4gICAgICAgIHJlc29sdmUoY2hpbGQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVqZWN0KFxuICAgICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBQcm9jZXNzIGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfVxcblN0ZG91dDogJHtzdGRvdXREYXRhfVxcblN0ZGVycjogJHtzdGRlcnJEYXRhfWBcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuIl19