51 lines
2.4 KiB
JavaScript
51 lines
2.4 KiB
JavaScript
var solc = require("solc");
|
|
var fs = require("fs");
|
|
var pathLib = require("path");
|
|
var addExtendedCode = require("./addExtendedCode.js");
|
|
|
|
let args = process.argv.slice(2);
|
|
let inputFilePath = args.length > 0?args[0]:"/out";
|
|
let outputFolder = args.length > 1?args[1]:"/out";
|
|
let extensionFilePath = args.length > 2?args[2]:"";
|
|
let isExtended = args.length > 3?(args[3] == 'true'):false;
|
|
let targetContractName = args.length > 4?args[4]:"";
|
|
let outputContractName = args.length > 5?args[5]:"";
|
|
|
|
fs.readFile(inputFilePath, "utf8", function(err, content) {
|
|
if (err) {
|
|
return console.log(err.message);
|
|
}
|
|
|
|
content = "// Created using ICO Wizard https://github.com/oraclesorg/ico-wizard by Oracles Network \n" + content;
|
|
if (!isExtended) return compileContract(content);
|
|
|
|
addExtendedCode(extensionFilePath, content, function(err, contentUpdated) {
|
|
if (err) {
|
|
return console.log(err.message);
|
|
}
|
|
|
|
compileContract(contentUpdated);
|
|
});
|
|
});
|
|
|
|
function compileContract(content) {
|
|
var outputFilePath = outputFolder + "/" + outputContractName + "_flat.sol";//.replace(pathLib.basename(inputFilePath), pathLib.basename(inputFilePath));
|
|
|
|
fs.writeFileSync(outputFilePath, content);
|
|
var solcV011 = solc.setupMethods(require("./bin/soljson-v0.4.11+commit.68ef5810.js"));
|
|
//var solcV011 = solc.useVersion('v0.4.11+commit.68ef5810');
|
|
var output = solcV011.compile(content, 1);
|
|
//console.log(output);
|
|
for (let contractName in output.contracts) {
|
|
if (targetContractName.toLowerCase() === contractName.substr(contractName.indexOf(":") + 1).toLowerCase()) {
|
|
//output.contracts[contractName].bytecode = solc.linkBytecode(output.contracts[contractName].bytecode, { ':SafeMathLib': '0x072ba774dfd4e827c539ecfc9c6e2fae8d012534' });
|
|
//0xbf90948c40197c1c22b5fdd72a212efda3994d68 - safemathlib with divides
|
|
//output.contracts[contractName].bytecode = solc.linkBytecode(output.contracts[contractName].bytecode, { ':SafeMathLib': '0xbf90948c40197c1c22b5fdd72a212efda3994d68' });
|
|
//0xe9ae538ffea453eae179e45a787ca76db619d40d - safemathlibext
|
|
//output.contracts[contractName].bytecode = solc.linkBytecode(output.contracts[contractName].bytecode, { ":SafeMathLibExt": "0xe9ae538ffea453eae179e45a787ca76db619d40d" });
|
|
fs.writeFileSync(outputFolder + "/" + outputContractName + "_flat.bin", output.contracts[contractName].bytecode);
|
|
fs.writeFileSync(outputFolder + "/" + outputContractName + "_flat.abi", output.contracts[contractName].interface);
|
|
}
|
|
}
|
|
}
|