tronbox
Version:
TronBox - Simple development framework for Tron
1 lines • 1.85 kB
JavaScript
var repl=require("repl");var expect=require("@truffle/expect");var async=require("async");var EventEmitter=require("events");var inherits=require("util").inherits;var TronWrap=require("../components/TronWrap");inherits(ReplManager,EventEmitter);function ReplManager(options){EventEmitter.call(this);expect.options(options,["working_directory","contracts_directory","contracts_build_directory","migrations_directory","network","network_id","provider","resolver","build_directory"]);this.options=options;this.repl=options.repl;this.contexts=[]}ReplManager.prototype.start=function(options){var self=this;this.contexts.push({prompt:options.prompt,interpreter:options.interpreter,done:options.done});var currentContext=this.contexts[this.contexts.length-1];if(!this.repl){this.repl=repl.start({prompt:currentContext.prompt,eval:this.interpret.bind(this)});this.repl.on("exit",function(){var doneFunctions=self.contexts.map(function(context){return context.done?function(){context.done()}:function(){}});async.series(doneFunctions,function(){process.exit()})})}this.repl.on("exit",function(){self.emit("exit")});this.repl.setPrompt(options.prompt);this.setContextVars(options.context||{})};ReplManager.prototype.setContextVars=function(obj){var self=this;if(this.repl){Object.keys(obj).forEach(function(key){self.repl.context[key]=obj[key]})}};ReplManager.prototype.stop=function(callback){var oldContext=this.contexts.pop();if(oldContext.done){oldContext.done()}var currentContext=this.contexts[this.contexts.length-1];if(currentContext){this.repl.setPrompt(currentContext.prompt)}else{process.exit()}if(callback){callback()}};ReplManager.prototype.interpret=function(cmd,context,filename,callback){var currentContext=this.contexts[this.contexts.length-1];currentContext.interpreter(cmd,context,filename,callback)};module.exports=ReplManager;
;