@decaf-ts/fabric-weaver
Version:
template for ts projects
116 lines • 13 kB
JavaScript
import { Logging } from "@decaf-ts/logging";
import { FabricBinaries } from "../constants/fabric-binaries";
import { PeerChaincodeCommands, PeerCommands } from "../constants/fabric-peer";
import { runCommand } from "../../utils/child-process";
export class FabricPeerChaincodeCommandBuilder {
constructor(logger) {
this.binName = FabricBinaries.PEER;
this.baseCommand = PeerCommands.CHAINCODE;
this.command = PeerChaincodeCommands.PACKAGE;
this.args = [];
if (!logger)
this.log = Logging.for(FabricPeerChaincodeCommandBuilder);
else
this.log = logger.for(FabricPeerChaincodeCommandBuilder.name);
}
setCommand(command) {
if (command !== undefined) {
this.log.debug(`Setting command to ${command}`);
this.command = command;
}
return this;
}
// setBlockPath(blockPath?: string): this {
// if (blockPath !== undefined) {
// this.log.debug(`Setting blockpath to ${blockPath}`);
// this.args.push(`--blockpath ${blockPath}`);
// }
// return this;
// }
// setBlockReference(blockRef?: string): this {
// if (blockRef !== undefined) {
// this.log.debug(`Setting block reference to ${blockRef}`);
// this.blockReference = blockRef;
// }
// return this;
// }
setlocation(location) {
if (location !== undefined) {
this.log.debug(`Setting contract location to ${location}`);
this.location = location;
}
return this;
}
// setChannelID(channelID?: string): this {
// if (channelID !== undefined) {
// this.log.debug(`Setting channel ID to ${channelID}`);
// this.args.push(`--channelID ${channelID}`);
// }
// return this;
// }
// setOrderer(orderer?: string): this {
// if (orderer !== undefined) {
// this.log.debug(`Setting orderer to ${orderer}`);
// this.args.push(`--orderer ${orderer}`);
// }
// return this;
// }
// enableTLS(enable?: boolean): this {
// if (enable !== undefined && enable === true) {
// this.log.debug(`Setting TLS enabled: ${enable}`);
// this.args.push(`--tls`);
// }
// return this;
// }
// setTLSCAFile(caFile?: string): this {
// if (caFile !== undefined) {
// this.log.debug(`Setting TLS CA file: ${caFile}`);
// this.args.push(`--cafile ${caFile}`);
// }
// return this;
// }
build() {
const command = [
this.getBinary(),
this.getBaseCommand(),
this.getCommand(),
this.location,
...[...new Set(this.args)],
]
.filter((item) => item !== undefined && item !== null && item !== "")
.join(" ");
this.log.debug(`Built command: ${command}`);
return command;
}
getBaseCommand() {
return this.baseCommand;
}
getCommand() {
return this.command;
}
getBinary() {
return this.binName;
}
getArgs() {
return [...new Set(this.args)];
}
async execute() {
const bin = this.getBinary();
const argz = [
this.getBaseCommand(),
this.getCommand(),
this.location,
...this.getArgs(),
].filter((item) => item !== undefined && item !== null && item !== "");
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFicmljLXBlZXItY2hhaW5jb2RlLWNvbW1hbmQtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9mYWJyaWMvcGVlci9mYWJyaWMtcGVlci1jaGFpbmNvZGUtY29tbWFuZC1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV2RCxNQUFNLE9BQU8saUNBQWlDO0lBWTVDLFlBQVksTUFBZTtRQVRuQixZQUFPLEdBQW1CLGNBQWMsQ0FBQyxJQUFJLENBQUM7UUFDOUMsZ0JBQVcsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDO1FBRXJDLFlBQU8sR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLENBQUM7UUFJeEMsU0FBSSxHQUFhLEVBQUUsQ0FBQztRQUcxQixJQUFJLENBQUMsTUFBTTtZQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDOztZQUNsRSxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUErQjtRQUN4QyxJQUFJLE9BQU8sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUNoRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN6QixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7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Q3hCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLHlDQUF5QyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ2pFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvZ2dlciwgTG9nZ2luZyB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgRmFicmljQmluYXJpZXMgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2ZhYnJpYy1iaW5hcmllc1wiO1xuaW1wb3J0IHsgUGVlckNoYWluY29kZUNvbW1hbmRzLCBQZWVyQ29tbWFuZHMgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2ZhYnJpYy1wZWVyXCI7XG5pbXBvcnQgeyBydW5Db21tYW5kIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NoaWxkLXByb2Nlc3NcIjtcblxuZXhwb3J0IGNsYXNzIEZhYnJpY1BlZXJDaGFpbmNvZGVDb21tYW5kQnVpbGRlciB7XG4gIHByaXZhdGUgbG9nOiBMb2dnZXI7XG5cbiAgcHJpdmF0ZSBiaW5OYW1lOiBGYWJyaWNCaW5hcmllcyA9IEZhYnJpY0JpbmFyaWVzLlBFRVI7XG4gIHByaXZhdGUgYmFzZUNvbW1hbmQgPSBQZWVyQ29tbWFuZHMuQ0hBSU5DT0RFO1xuXG4gIHByaXZhdGUgY29tbWFuZCA9IFBlZXJDaGFpbmNvZGVDb21tYW5kcy5QQUNLQUdFO1xuXG4gIHByaXZhdGUgbG9jYXRpb24/OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBhcmdzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKGxvZ2dlcj86IExvZ2dlcikge1xuICAgIGlmICghbG9nZ2VyKSB0aGlzLmxvZyA9IExvZ2dpbmcuZm9yKEZhYnJpY1BlZXJDaGFpbmNvZGVDb21tYW5kQnVpbGRlcik7XG4gICAgZWxzZSB0aGlzLmxvZyA9IGxvZ2dlci5mb3IoRmFicmljUGVlckNoYWluY29kZUNvbW1hbmRCdWlsZGVyLm5hbWUpO1xuICB9XG5cbiAgc2V0Q29tbWFuZChjb21tYW5kPzogUGVlckNoYWluY29kZUNvbW1hbmRzKTogdGhpcyB7XG4gICAgaWYgKGNvbW1hbmQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYFNldHRpbmcgY29tbWFuZCB0byAke2NvbW1hbmR9YCk7XG4gICAgICB0aGlzLmNvbW1hbmQgPSBjb21tYW5kO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vICAgc2V0QmxvY2tQYXRoKGJsb2NrUGF0aD86IHN0cmluZyk6IHRoaXMge1xuICAvLyAgICAgaWYgKGJsb2NrUGF0aCAhPT0gdW5kZWZpbmVkKSB7XG4gIC8vICAgICAgIHRoaXMubG9nLmRlYnVnKGBTZXR0aW5nIGJsb2NrcGF0aCB0byAke2Jsb2NrUGF0aH1gKTtcbiAgLy8gICAgICAgdGhpcy5hcmdzLnB1c2goYC0tYmxvY2twYXRoICR7YmxvY2tQYXRofWApO1xuICAvLyAgICAgfVxuICAvLyAgICAgcmV0dXJuIHRoaXM7XG4gIC8vICAgfVxuXG4gIC8vICAgc2V0QmxvY2tSZWZlcmVuY2UoYmxvY2tSZWY/OiBzdHJpbmcpOiB0aGlzIHtcbiAgLy8gICAgIGlmIChibG9ja1JlZiAhPT0gdW5kZWZpbmVkKSB7XG4gIC8vICAgICAgIHRoaXMubG9nLmRlYnVnKGBTZXR0aW5nIGJsb2NrIHJlZmVyZW5jZSB0byAke2Jsb2NrUmVmfWApO1xuICAvLyAgICAgICB0aGlzLmJsb2NrUmVmZXJlbmNlID0gYmxvY2tSZWY7XG4gIC8vICAgICB9XG4gIC8vICAgICByZXR1cm4gdGhpcztcbiAgLy8gICB9XG5cbiAgc2V0bG9jYXRpb24obG9jYXRpb24/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAobG9jYXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYFNldHRpbmcgY29udHJhY3QgbG9jYXRpb24gdG8gJHtsb2NhdGlvbn1gKTtcbiAgICAgIHRoaXMubG9jYXRpb24gPSBsb2NhdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyAgIHNldENoYW5uZWxJRChjaGFubmVsSUQ/OiBzdHJpbmcpOiB0aGlzIHtcbiAgLy8gICAgIGlmIChjaGFubmVsSUQgIT09IHVuZGVmaW5lZCkge1xuICAvLyAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgU2V0dGluZyBjaGFubmVsIElEIHRvICR7Y2hhbm5lbElEfWApO1xuICAvLyAgICAgICB0aGlzLmFyZ3MucHVzaChgLS1jaGFubmVsSUQgJHtjaGFubmVsSUR9YCk7XG4gIC8vICAgICB9XG4gIC8vICAgICByZXR1cm4gdGhpcztcbiAgLy8gICB9XG5cbiAgLy8gICBzZXRPcmRlcmVyKG9yZGVyZXI/OiBzdHJpbmcpOiB0aGlzIHtcbiAgLy8gICAgIGlmIChvcmRlcmVyICE9PSB1bmRlZmluZWQpIHtcbiAgLy8gICAgICAgdGhpcy5sb2cuZGVidWcoYFNldHRpbmcgb3JkZXJlciB0byAke29yZGVyZXJ9YCk7XG4gIC8vICAgICAgIHRoaXMuYXJncy5wdXNoKGAtLW9yZGVyZXIgJHtvcmRlcmVyfWApO1xuICAvLyAgICAgfVxuICAvLyAgICAgcmV0dXJuIHRoaXM7XG4gIC8vICAgfVxuXG4gIC8vICAgZW5hYmxlVExTKGVuYWJsZT86IGJvb2xlYW4pOiB0aGlzIHtcbiAgLy8gICAgIGlmIChlbmFibGUgIT09IHVuZGVmaW5lZCAmJiBlbmFibGUgPT09IHRydWUpIHtcbiAgLy8gICAgICAgdGhpcy5sb2cuZGVidWcoYFNldHRpbmcgVExTIGVuYWJsZWQ6ICR7ZW5hYmxlfWApO1xuICAvLyAgICAgICB0aGlzLmFyZ3MucHVzaChgLS10bHNgKTtcbiAgLy8gICAgIH1cbiAgLy8gICAgIHJldHVybiB0aGlzO1xuICAvLyAgIH1cblxuICAvLyAgIHNldFRMU0NBRmlsZShjYUZpbGU/OiBzdHJpbmcpOiB0aGlzIHtcbiAgLy8gICAgIGlmIChjYUZpbGUgIT09IHVuZGVmaW5lZCkge1xuICAvLyAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgU2V0dGluZyBUTFMgQ0EgZmlsZTogJHtjYUZpbGV9YCk7XG4gIC8vICAgICAgIHRoaXMuYXJncy5wdXNoKGAtLWNhZmlsZSAke2NhRmlsZX1gKTtcbiAgLy8gICAgIH1cblxuICAvLyAgICAgcmV0dXJuIHRoaXM7XG4gIC8vICAgfVxuXG4gIGJ1aWxkKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY29tbWFuZDogc3RyaW5nID0gW1xuICAgICAgdGhpcy5nZXRCaW5hcnkoKSxcbiAgICAgIHRoaXMuZ2V0QmFzZUNvbW1hbmQoKSxcbiAgICAgIHRoaXMuZ2V0Q29tbWFuZCgpLFxuICAgICAgdGhpcy5sb2NhdGlvbixcbiAgICAgIC4uLlsuLi5uZXcgU2V0KHRoaXMuYXJncyldLFxuICAgIF1cbiAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gIT09IHVuZGVmaW5lZCAmJiBpdGVtICE9PSBudWxsICYmIGl0ZW0gIT09IFwiXCIpXG4gICAgICAuam9pbihcIiBcIik7XG5cbiAgICB0aGlzLmxvZy5kZWJ1ZyhgQnVpbHQgY29tbWFuZDogJHtjb21tYW5kfWApO1xuICAgIHJldHVybiBjb21tYW5kO1xuICB9XG5cbiAgZ2V0QmFzZUNvbW1hbmQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5iYXNlQ29tbWFuZDtcbiAgfVxuXG4gIGdldENvbW1hbmQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb21tYW5kO1xuICB9XG5cbiAgZ2V0QmluYXJ5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYmluTmFtZTtcbiAgfVxuXG4gIGdldEFyZ3MoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbLi4ubmV3IFNldCh0aGlzLmFyZ3MpXTtcbiAgfVxuXG4gIGFzeW5jIGV4ZWN1dGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgYmluID0gdGhpcy5nZXRCaW5hcnkoKTtcbiAgICBjb25zdCBhcmd6ID0gW1xuICAgICAgdGhpcy5nZXRCYXNlQ29tbWFuZCgpLFxuICAgICAgdGhpcy5nZXRDb21tYW5kKCksXG4gICAgICB0aGlzLmxvY2F0aW9uLFxuICAgICAgLi4udGhpcy5nZXRBcmdzKCksXG4gICAgXS5maWx0ZXIoXG4gICAgICAoaXRlbSkgPT4gaXRlbSAhPT0gdW5kZWZpbmVkICYmIGl0ZW0gIT09IG51bGwgJiYgaXRlbSAhPT0gXCJcIlxuICAgICkgYXMgc3RyaW5nW107XG5cbiAgICB0cnkge1xuICAgICAgLy8gY29uc3QgcmVnZXggPSAvXFxbXFxzKklORk9cXHMqXFxdIExpc3RlbmluZyBvbiBodHRwLztcbiAgICAgIC8vIGNhbiBiZSB1c2VkIGFzIGEgcHJvbWlzZSBidXQgdG8gbG9jayB0aGUgbG9ncyBydW5uaW5nIGFzIGV4ZWNzeW5jXG4gICAgICBhd2FpdCBydW5Db21tYW5kKGJpbiwgYXJneik7XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIHRoaXMubG9nLmVycm9yKGBFcnJvcjogRmFpbGVkIHRvIGV4ZWN1dGUgdGhlIGNvbW1hbmQ6ICR7ZXJyb3J9YCk7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuICB9XG59XG4iXX0=