@libotony/sharp-cli
Version:
Sharp command line helper
89 lines • 8.77 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const path = require("path");
const fs = require("fs");
const sharp_compile_1 = require("@libotony/sharp-compile");
const utils_1 = require("./utils");
const debug = require('debug')('sharp:compile-flow');
exports.compileFlow = (options) => __awaiter(this, void 0, void 0, function* () {
process.stderr.write('Preparing compiler......\n');
const solc = yield sharp_compile_1.getSolidityCompiler(options.solcVer).catch((e) => {
return Promise.reject(new Error('failed to load compiler: ' + e.message));
});
const contractsDirectory = options.contractsDirectory;
const buildDirectory = options.buildDirectory;
process.stderr.write('Compiling contracts......\n');
for (const file of options.contracts) {
const output = sharp_compile_1.compile(solc, { file, options: options.solc, contractsDirectory });
let warning = '';
if (output.errors && output.errors.length) {
for (const e of output.errors) {
if (e.type === 'Warning') {
warning += e.formattedMessage;
}
else {
throw new Error(e.formattedMessage);
}
}
}
if (!!warning) {
const head = utils_1.colors.waring('\n==============WARNING=================\n\n');
const tail = utils_1.colors.waring('\n\n=======================================\n');
process.stderr.write(head + warning.replace(/\n$/, '') + tail);
}
const refs = [];
// FileName
for (const [_, fileMeta] of Object.entries(output.contracts)) {
// ContractName
for (const [contractName, contractMeta] of Object.entries(fileMeta)) {
const fd = fs.openSync(path.join(buildDirectory, contractName + '.json'), 'w');
// Get all link references
// {
// "name.sol": {
// "contractName": [ReferenceObject]
// }
// }
for (const [_, references] of Object.entries(contractMeta.evm.bytecode.linkReferences)) {
for (const [r, _] of Object.entries(references)) {
refs.push(r);
}
}
const info = {
contractName,
abi: contractMeta.abi,
metadata: contractMeta.metadata,
bytecode: utils_1.normalizeHex(contractMeta.evm.bytecode.object),
deployedBytecode: utils_1.normalizeHex(contractMeta.evm.deployedBytecode.object),
sourceMap: contractMeta.evm.bytecode.sourceMap,
deployedSourceMap: contractMeta.evm.deployedBytecode.sourceMap,
compiler: {
name: 'solc',
version: solc.version()
},
devdoc: contractMeta.devdoc,
userdoc: contractMeta.userdoc,
updatedAt: (new Date()).toISOString()
};
fs.writeSync(fd, JSON.stringify(info, null, 4), null, 'utf-8');
fs.closeSync(fd);
}
}
if (refs.length) {
const head = utils_1.colors.info('\n===========LINK REFERENCE==============\n\n');
const tail = utils_1.colors.info('\n\n=======================================\n');
const tipStart = 'External libraries refound: \n\n ';
const tipEnd = '\n\nSet libraries in options to link them.';
process.stderr.write(head + tipStart + refs.join(', ') + tipEnd + tail);
}
}
process.stderr.write(`All done! Saved to ${buildDirectory}\n`);
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZS1mbG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbXBpbGUtZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsNkJBQTRCO0FBQzVCLHlCQUF3QjtBQUN4QiwyREFBc0U7QUFFdEUsbUNBQThDO0FBQzlDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO0FBRXZDLFFBQUEsV0FBVyxHQUFHLENBQU8sT0FBMkIsRUFBRSxFQUFFO0lBQzdELE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUE7SUFDbEQsTUFBTSxJQUFJLEdBQUcsTUFBTSxtQ0FBbUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBUSxFQUFFLEVBQUU7UUFDdkUsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLDJCQUEyQixHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO0lBQzdFLENBQUMsQ0FBQyxDQUFBO0lBQ0YsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUE7SUFDckQsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQTtJQUU3QyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO0lBQ25ELEtBQUssTUFBTSxJQUFJLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRTtRQUNsQyxNQUFNLE1BQU0sR0FBRyx1QkFBTyxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUE7UUFFakYsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFBO1FBQ2hCLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMs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