@decaf-ts/fabric-weaver
Version:
template for ts projects
45 lines • 6.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.runCommand = runCommand;
const child_process_1 = require("child_process");
const logging_1 = require("@decaf-ts/logging");
async function runCommand(command, args = [], options = { stdio: "inherit" }, logMatch) {
const log = logging_1.Logging.for(runCommand);
log.info(`Running command: ${command} ${args.join(" ")}`);
if (!logMatch)
return (0, child_process_1.execSync)([command, ...args].join(" "), options);
return new Promise((resolve, reject) => {
const child = (0, child_process_1.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpbGQtcHJvY2Vzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9jaGlsZC1wcm9jZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EsZ0NBb0RDO0FBdkRELGlEQUE4RDtBQUM5RCwrQ0FBb0Q7QUFFN0MsS0FBSyxVQUFVLFVBQVUsQ0FDOUIsT0FBZSxFQUNmLE9BQWlCLEVBQUUsRUFDbkIsVUFBeUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQzdELFFBQWlCO0lBRWpCLE1BQU0sR0FBRyxHQUFXLGlCQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzVDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUUxRCxJQUFJLENBQUMsUUFBUTtRQUFFLE9BQU8sSUFBQSx3QkFBUSxFQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXRFLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDckMsTUFBTSxLQUFLLEdBQUcsSUFBQSxxQkFBSyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDNUMsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVwQixNQUFNLFVBQVUsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO1lBQ2xDLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pCLENBQUM7UUFDSCxDQUFDLENBQUM7UUFFRixLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFZLEVBQUUsRUFBRTtZQUN2QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNyQixVQUFVLElBQUksT0FBTyxDQUFDO1lBQ3RCLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztRQUVILEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQVksRUFBRSxFQUFFO1lBQ3ZDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZCLFVBQVUsSUFBSSxPQUFPLENBQUM7WUFDdEIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO1FBRUgsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFVLEVBQUUsRUFBRTtZQUMvQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztRQUVILEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBWSxFQUFFLEVBQUU7WUFDakMsSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLENBQ0osSUFBSSxLQUFLLENBQ1AsNEJBQTRCLElBQUksYUFBYSxVQUFVLGFBQWEsVUFBVSxFQUFFLENBQ2pGLENBQ0YsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNwYXduLCBDaGlsZFByb2Nlc3MsIGV4ZWNTeW5jIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IExvZ2dlciwgTG9nZ2luZyB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuQ29tbWFuZChcbiAgY29tbWFuZDogc3RyaW5nLFxuICBhcmdzOiBzdHJpbmdbXSA9IFtdLFxuICBvcHRpb25zOiB7IFtpbmRleGVyOiBzdHJpbmddOiBzdHJpbmcgfSA9IHsgc3RkaW86IFwiaW5oZXJpdFwiIH0sXG4gIGxvZ01hdGNoPzogUmVnRXhwXG4pOiBQcm9taXNlPENoaWxkUHJvY2VzcyB8IHZvaWQgfCBCdWZmZXI+IHtcbiAgY29uc3QgbG9nOiBMb2dnZXIgPSBMb2dnaW5nLmZvcihydW5Db21tYW5kKTtcbiAgbG9nLmluZm8oYFJ1bm5pbmcgY29tbWFuZDogJHtjb21tYW5kfSAke2FyZ3Muam9pbihcIiBcIil9YCk7XG5cbiAgaWYgKCFsb2dNYXRjaCkgcmV0dXJuIGV4ZWNTeW5jKFtjb21tYW5kLCAuLi5hcmdzXS5qb2luKFwiIFwiKSwgb3B0aW9ucyk7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBjaGlsZCA9IHNwYXduKGNvbW1hbmQsIGFyZ3MsIG9wdGlvbnMpO1xuICAgIGxldCBzdGRvdXREYXRhID0gXCJcIjtcbiAgICBsZXQgc3RkZXJyRGF0YSA9IFwiXCI7XG5cbiAgICBjb25zdCBjaGVja01hdGNoID0gKGRhdGE6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKGxvZ01hdGNoICYmIGxvZ01hdGNoLnRlc3QoZGF0YSkpIHtcbiAgICAgICAgcmVzb2x2ZShjaGlsZCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNoaWxkLnN0ZG91dC5vbihcImRhdGFcIiwgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgY29uc3Qgc3RyRGF0YSA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgIGNvbnNvbGUubG9nKHN0ckRhdGEpO1xuICAgICAgc3Rkb3V0RGF0YSArPSBzdHJEYXRhO1xuICAgICAgY2hlY2tNYXRjaChzdHJEYXRhKTtcbiAgICB9KTtcblxuICAgIGNoaWxkLnN0ZGVyci5vbihcImRhdGFcIiwgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgY29uc3Qgc3RyRGF0YSA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgIGNvbnNvbGUuZXJyb3Ioc3RyRGF0YSk7XG4gICAgICBzdGRlcnJEYXRhICs9IHN0ckRhdGE7XG4gICAgICBjaGVja01hdGNoKHN0ckRhdGEpO1xuICAgIH0pO1xuXG4gICAgY2hpbGQub24oXCJlcnJvclwiLCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgcmVqZWN0KGVycik7XG4gICAgfSk7XG5cbiAgICBjaGlsZC5vbihcImNsb3NlXCIsIChjb2RlOiBudW1iZXIpID0+IHtcbiAgICAgIGlmIChjb2RlID09PSAwKSB7XG4gICAgICAgIHJlc29sdmUoY2hpbGQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVqZWN0KFxuICAgICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBQcm9jZXNzIGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfVxcblN0ZG91dDogJHtzdGRvdXREYXRhfVxcblN0ZGVycjogJHtzdGRlcnJEYXRhfWBcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuIl19