UNPKG

@decaf-ts/fabric-weaver

Version:
89 lines 10.6 kB
import { Logging } from "@decaf-ts/logging"; import { FabricBinaries } from "../constants/fabric-binaries"; import { mapParser } from "../../utils/parsers"; import { PeerCommands, PeerNodeCommands } from "../constants/fabric-peer"; import { runCommand } from "../../utils/child-process"; export class FabricPeerNodeCommandBuilder { constructor(logger) { this.binName = FabricBinaries.PEER; this.baseCommand = PeerCommands.NODE; this.command = PeerNodeCommands.START; this.args = new Map(); if (!logger) this.log = Logging.for(FabricPeerNodeCommandBuilder); else this.log = logger.for(FabricPeerNodeCommandBuilder.name); } setCommand(command) { if (command !== undefined) { this.log.debug(`Setting command to ${command}`); this.command = command; } return this; } setPeerDevelopmentMode(enable) { if (enable !== undefined) { this.log.debug(`Setting peer development mode to ${enable}`); this.args.set("--peer-chaincodedev", enable); } return this; } setBlockNumber(blockNumber) { if (blockNumber !== undefined) { this.log.debug(`Setting block number to ${blockNumber}`); this.args.set("--blockNumber", blockNumber.toString()); } return this; } setChannelID(channelID) { if (channelID !== undefined) { this.log.debug(`Setting channel ID to ${channelID}`); this.args.set("--channelID", channelID); } return this; } setHelp(show) { if (show !== undefined) { this.log.debug(`Setting help flag: ${show}`); this.args.set("--help", show); } return this; } build() { const command = [ this.getBinary(), this.getBaseCommand(), this.getCommand(), this.getCommand(), ...mapParser(this.args), ].join(" "); this.log.debug(`Built command: ${command}`); return command; } getBaseCommand() { return this.baseCommand; } getCommand() { return this.command; } getBinary() { return this.binName; } getArgs() { return mapParser(this.args); } async execute() { const bin = this.getBinary(); const argz = [this.getBaseCommand(), this.getCommand(), ...this.getArgs()]; try { // const regex = /\[\s*INFO\s*\] Listening on http/; // can be used as a promise but to lock the logs running as execsync await runCommand(bin, argz); } catch (error) { this.log.error(`Error: Failed to execute the command: ${error}`); process.exit(1); } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFicmljLXBlZXItbm9kZS1jb21tYW5kLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZmFicmljL3BlZXIvZmFicmljLXBlZXItbm9kZS1jb21tYW5kLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV2RCxNQUFNLE9BQU8sNEJBQTRCO0lBU3ZDLFlBQVksTUFBZTtRQU5uQixZQUFPLEdBQW1CLGNBQWMsQ0FBQyxJQUFJLENBQUM7UUFDOUMsZ0JBQVcsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDO1FBQ2hDLFlBQU8sR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7UUFFakMsU0FBSSxHQUFzRCxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRzFFLElBQUksQ0FBQyxNQUFNO1lBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUM7O1lBQzdELElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQTBCO1FBQ25DLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLHNCQUFzQixPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxPQUFPLEdB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QUFHLENBQUMsS0FBSyxDQUFDLHlDQUF5QyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ2pFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvZ2dlciwgTG9nZ2luZyB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgRmFicmljQmluYXJpZXMgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2ZhYnJpYy1iaW5hcmllc1wiO1xuaW1wb3J0IHsgbWFwUGFyc2VyIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3BhcnNlcnNcIjtcbmltcG9ydCB7IFBlZXJDb21tYW5kcywgUGVlck5vZGVDb21tYW5kcyB9IGZyb20gXCIuLi9jb25zdGFudHMvZmFicmljLXBlZXJcIjtcbmltcG9ydCB7IHJ1bkNvbW1hbmQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY2hpbGQtcHJvY2Vzc1wiO1xuXG5leHBvcnQgY2xhc3MgRmFicmljUGVlck5vZGVDb21tYW5kQnVpbGRlciB7XG4gIHByaXZhdGUgbG9nOiBMb2dnZXI7XG5cbiAgcHJpdmF0ZSBiaW5OYW1lOiBGYWJyaWNCaW5hcmllcyA9IEZhYnJpY0JpbmFyaWVzLlBFRVI7XG4gIHByaXZhdGUgYmFzZUNvbW1hbmQgPSBQZWVyQ29tbWFuZHMuTk9ERTtcbiAgcHJpdmF0ZSBjb21tYW5kID0gUGVlck5vZGVDb21tYW5kcy5TVEFSVDtcblxuICBwcml2YXRlIGFyZ3M6IE1hcDxzdHJpbmcsIHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXIgfCBzdHJpbmdbXT4gPSBuZXcgTWFwKCk7XG5cbiAgY29uc3RydWN0b3IobG9nZ2VyPzogTG9nZ2VyKSB7XG4gICAgaWYgKCFsb2dnZXIpIHRoaXMubG9nID0gTG9nZ2luZy5mb3IoRmFicmljUGVlck5vZGVDb21tYW5kQnVpbGRlcik7XG4gICAgZWxzZSB0aGlzLmxvZyA9IGxvZ2dlci5mb3IoRmFicmljUGVlck5vZGVDb21tYW5kQnVpbGRlci5uYW1lKTtcbiAgfVxuXG4gIHNldENvbW1hbmQoY29tbWFuZD86IFBlZXJOb2RlQ29tbWFuZHMpOiB0aGlzIHtcbiAgICBpZiAoY29tbWFuZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgU2V0dGluZyBjb21tYW5kIHRvICR7Y29tbWFuZH1gKTtcbiAgICAgIHRoaXMuY29tbWFuZCA9IGNvbW1hbmQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0UGVlckRldmVsb3BtZW50TW9kZShlbmFibGU/OiBib29sZWFuKTogdGhpcyB7XG4gICAgaWYgKGVuYWJsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgU2V0dGluZyBwZWVyIGRldmVsb3BtZW50IG1vZGUgdG8gJHtlbmFibGV9YCk7XG4gICAgICB0aGlzLmFyZ3Muc2V0KFwiLS1wZWVyLWNoYWluY29kZWRldlwiLCBlbmFibGUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldEJsb2NrTnVtYmVyKGJsb2NrTnVtYmVyPzogbnVtYmVyKTogdGhpcyB7XG4gICAgaWYgKGJsb2NrTnVtYmVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGBTZXR0aW5nIGJsb2NrIG51bWJlciB0byAke2Jsb2NrTnVtYmVyfWApO1xuICAgICAgdGhpcy5hcmdzLnNldChcIi0tYmxvY2tOdW1iZXJcIiwgYmxvY2tOdW1iZXIudG9TdHJpbmcoKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0Q2hhbm5lbElEKGNoYW5uZWxJRD86IHN0cmluZyk6IHRoaXMge1xuICAgIGlmIChjaGFubmVsSUQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYFNldHRpbmcgY2hhbm5lbCBJRCB0byAke2NoYW5uZWxJRH1gKTtcbiAgICAgIHRoaXMuYXJncy5zZXQoXCItLWNoYW5uZWxJRFwiLCBjaGFubmVsSUQpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldEhlbHAoc2hvdz86IGJvb2xlYW4pOiB0aGlzIHtcbiAgICBpZiAoc2hvdyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgU2V0dGluZyBoZWxwIGZsYWc6ICR7c2hvd31gKTtcbiAgICAgIHRoaXMuYXJncy5zZXQoXCItLWhlbHBcIiwgc2hvdyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYnVpbGQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb21tYW5kOiBzdHJpbmcgPSBbXG4gICAgICB0aGlzLmdldEJpbmFyeSgpLFxuICAgICAgdGhpcy5nZXRCYXNlQ29tbWFuZCgpLFxuICAgICAgdGhpcy5nZXRDb21tYW5kKCksXG4gICAgICB0aGlzLmdldENvbW1hbmQoKSxcbiAgICAgIC4uLm1hcFBhcnNlcih0aGlzLmFyZ3MpLFxuICAgIF0uam9pbihcIiBcIik7XG5cbiAgICB0aGlzLmxvZy5kZWJ1ZyhgQnVpbHQgY29tbWFuZDogJHtjb21tYW5kfWApO1xuICAgIHJldHVybiBjb21tYW5kO1xuICB9XG5cbiAgZ2V0QmFzZUNvbW1hbmQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5iYXNlQ29tbWFuZDtcbiAgfVxuXG4gIGdldENvbW1hbmQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb21tYW5kO1xuICB9XG5cbiAgZ2V0QmluYXJ5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYmluTmFtZTtcbiAgfVxuXG4gIGdldEFyZ3MoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBtYXBQYXJzZXIodGhpcy5hcmdzKTtcbiAgfVxuXG4gIGFzeW5jIGV4ZWN1dGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgYmluID0gdGhpcy5nZXRCaW5hcnkoKTtcbiAgICBjb25zdCBhcmd6ID0gW3RoaXMuZ2V0QmFzZUNvbW1hbmQoKSwgdGhpcy5nZXRDb21tYW5kKCksIC4uLnRoaXMuZ2V0QXJncygpXTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBjb25zdCByZWdleCA9IC9cXFtcXHMqSU5GT1xccypcXF0gTGlzdGVuaW5nIG9uIGh0dHAvO1xuICAgICAgLy8gY2FuIGJlIHVzZWQgYXMgYSBwcm9taXNlIGJ1dCB0byBsb2NrIHRoZSBsb2dzIHJ1bm5pbmcgYXMgZXhlY3N5bmNcbiAgICAgIGF3YWl0IHJ1bkNvbW1hbmQoYmluLCBhcmd6KTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgdGhpcy5sb2cuZXJyb3IoYEVycm9yOiBGYWlsZWQgdG8gZXhlY3V0ZSB0aGUgY29tbWFuZDogJHtlcnJvcn1gKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==