tronbox
Version:
TronBox - Simple development framework for Tron
1 lines • 2.02 kB
JavaScript
var command={command:"watch",description:"Watch filesystem for changes and rebuild the project automatically",builder:{},run:function run(options){process.env.CURRENT="watch";var Build=require("../build");var Config=require("../../components/Config");var chokidar=require("chokidar");var path=require("path");var colors=require("colors");var Contracts=require("../../components/WorkflowCompile");var TruffleError=require("@truffle/error");var config=Config.detect(options);var printSuccess=function printSuccess(){config.logger.log(colors.green("Completed without errors on "+new Date().toString()))};var printFailure=function printFailure(err){if(err instanceof TruffleError){console.error(err.message)}else{console.error(err.stack||err.toString())}};var working=false;var needs_rebuild=true;var needs_recompile=true;var watchPaths=[path.join(config.working_directory,"app/**/*"),path.join(config.contracts_build_directory,"/**/*"),path.join(config.contracts_directory,"/**/*"),path.join(config.working_directory,"tronbox-config.js"),path.join(config.working_directory,"tronbox.js")];chokidar.watch(watchPaths,{ignored:/[/\\]\./,cwd:config.working_directory,ignoreInitial:true}).on("all",function(event,filePath){var display_path=path.join("./",filePath.replace(config.working_directory,""));config.logger.log(colors.cyan(">> File "+display_path+" changed."));needs_rebuild=true;if(path.join(config.working_directory,filePath).indexOf(config.contracts_directory)>=0){needs_recompile=true}});var _check_rebuild=function check_rebuild(){if(working){setTimeout(_check_rebuild,200);return}if(needs_rebuild){needs_rebuild=false;if(config.build!=null){config.logger.log("Rebuilding...");working=true;Build.build(config,function(err){if(err){printFailure(err)}else{printSuccess()}working=false})}}else if(needs_recompile){needs_recompile=false;working=true;Contracts.compile(config,function(err){if(err){printFailure(err)}working=false})}setTimeout(_check_rebuild,200)};_check_rebuild()}};module.exports=command;
;