tronbox
Version:
TronBox - Simple development framework for Tron
1 lines • 3.08 kB
JavaScript
;var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){(0,_defineProperty2["default"])(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}var _require=require("child_process"),execSync=_require.execSync;var path=require("path");var chalk=require("chalk");var fs=require("fs-extra");var homedir=require("homedir");var wrapper=require("solc/wrapper");var _require2=require("../../package"),name=_require2.name,version=_require2.version;var maxVersion="0.8.24";function compareVersions(version1,version2){var v1Parts=version1.split(".").map(Number);var v2Parts=version2.split(".").map(Number);var maxLength=Math.max(v1Parts.length,v2Parts.length);for(var i=0;i<maxLength;i++){var v1=v1Parts[i]||0;var v2=v2Parts[i]||0;if(v1>v2){return 1}else if(v1<v2){return-1}}return 0}function getWrapper(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var compilerVersion=maxVersion;var solcDir=path.join(homedir(),".tronbox",options.evm?"evm-solc":"solc");if(options.networks){if(options.networks.useZeroFourCompiler){compilerVersion="0.4.25"}else if(options.networks.useZeroFiveCompiler){compilerVersion="0.5.4"}try{if(options.networks.compilers){compilerVersion=options.networks.compilers.solc.version}if(options.compilers){compilerVersion=options.compilers.solc.version}if(compareVersions(compilerVersion,maxVersion)>0&&!options.evm){console.info("".concat(chalk.red(chalk.bold("Error:"))," TronBox v").concat(version," currently supports Tron Solidity compiler versions up to ").concat(chalk.green(maxVersion),".\nYou are using version ").concat(chalk.yellow(compilerVersion),", which is not supported."));process.exit()}}catch(e){}}var soljsonPath=path.join(solcDir,"soljson_v".concat(compilerVersion,".js"));if(!fs.existsSync(soljsonPath)){if(process.argv[1]){name=process.argv[1]}if(process.env.TRONBOX_NAME){name=process.env.TRONBOX_NAME}console.info("Fetching ".concat(options.evm?"Ethereum":"Tron"," Solidity compiler version ").concat(compilerVersion,"..."));var output=execSync("".concat(name," --download-compiler ").concat(compilerVersion," ").concat(options.evm?"--evm":""),{env:_objectSpread(_objectSpread({},process.env),{},{FORCE_COLOR:"1"})}).toString();console.info(output);if(output.indexOf("Error:")!==-1){process.exit()}}var soljson=eval("require")(soljsonPath);return wrapper(soljson)}module.exports.getWrapper=getWrapper;module.exports.maxVersion=maxVersion;