UNPKG

tronbox

Version:

TronBox - Simple development framework for Tron

1 lines 3.38 kB
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _regenerator=_interopRequireDefault(require("@babel/runtime/regenerator"));var _asyncToGenerator2=_interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));var chalk=require("chalk");var path=require("path");var fs=require("fs-extra");var homedir=require("homedir");var req=require("axios");function downloader(_x,_x2){return _downloader.apply(this,arguments)}function _downloader(){_downloader=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(compilerVersion,evm){var dir,soljsonPath,soljsonUrl,solidityUrl,list,_solidityUrl,_list,res;return _regenerator["default"].wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:dir=path.join(homedir(),".tronbox",evm?"evm-solc":"solc");soljsonPath=path.join(dir,"soljson_v".concat(compilerVersion,".js"));_context.next=4;return fs.ensureDir(path.join(dir));case 4:soljsonUrl="";if(!evm){_context.next=20;break}_context.prev=6;solidityUrl="https://binaries.soliditylang.org/bin";_context.next=10;return req.get("".concat(solidityUrl,"/list.json"));case 10:list=_context.sent;if(list&&list.data){if(list.data.releases&&list.data.releases[compilerVersion]){soljsonUrl="".concat(solidityUrl,"/").concat(list.data.releases[compilerVersion])}else{console.info(chalk.red(chalk.bold("Error:"),"Unable to locate Solidity compiler version ".concat(chalk.yellow(compilerVersion),".")));process.exit()}}_context.next=18;break;case 14:_context.prev=14;_context.t0=_context["catch"](6);console.info(chalk.red(chalk.bold("Error:"),"Failed to fetch Solidity compiler list."));process.exit();case 18:_context.next=32;break;case 20:_context.prev=20;_solidityUrl="https://tronprotocol.github.io/solc-bin/wasm";_context.next=24;return req.get("".concat(_solidityUrl,"/list.json"));case 24:_list=_context.sent;if(_list&&_list.data&&_list.data.builds){_list.data.builds.forEach(function(_){var version=_.version,path=_.path;if(version===compilerVersion){soljsonUrl="".concat(_solidityUrl,"/").concat(path)}});if(!soljsonUrl){console.info(chalk.red(chalk.bold("Error:"),"Unable to locate Solidity compiler version ".concat(chalk.yellow(compilerVersion),".")));process.exit()}}_context.next=32;break;case 28:_context.prev=28;_context.t1=_context["catch"](20);console.info(chalk.red(chalk.bold("Error:"),"Failed to fetch Solidity compiler list."));process.exit();case 32:_context.prev=32;_context.next=35;return req.get(soljsonUrl,{responseType:"arraybuffer"});case 35:res=_context.sent;if(!(res&&res.data)){_context.next=40;break}_context.next=39;return fs.writeFile(soljsonPath,res.data);case 39:if(!fs.existsSync(soljsonPath)){console.info(chalk.red(chalk.bold("Error:"),"Permission required."));console.info("\nMost likely, you installed Node.js as root.\nPlease, download the compiler manually, running:\n\ntronbox --download-compiler ".concat(compilerVersion," ").concat(evm?"--evm":"","\n"))}else{console.info("Compiler downloaded.")}case 40:_context.next=46;break;case 42:_context.prev=42;_context.t2=_context["catch"](32);console.info(chalk.red(chalk.bold("Error:"),"Wrong Solidity compiler version."));process.exit();case 46:case"end":return _context.stop()}},_callee,null,[[6,14],[20,28],[32,42]])}));return _downloader.apply(this,arguments)}module.exports=downloader;