UNPKG

tronbox

Version:

TronBox - Simple development framework for Tron

1 lines 2.37 kB
"use strict";var mkdirp=require("mkdirp");var del=require("del");var Contracts=require("../components/WorkflowCompile");var BuildError=require("./errors/builderror");var child_process=require("child_process");var spawnargs=require("spawn-args");var _=require("lodash");var expect=require("@truffle/expect");function CommandBuilder(command){this.command=command}CommandBuilder.prototype.build=function(options,callback){console.debug("Running `"+this.command+"`...");var args=spawnargs(this.command);var ps=args.shift();var cmd=child_process.spawn(ps,args,{detached:false,cwd:options.working_directory,env:_.merge(process.env,{WORKING_DIRECTORY:options.working_directory,BUILD_DESTINATION_DIRECTORY:options.destination_directory,BUILD_CONTRACTS_DIRECTORY:options.contracts_build_directory})});cmd.stdout.on("data",function(data){console.debug(data.toString())});cmd.stderr.on("data",function(data){console.debug("build error: "+data)});cmd.on("close",function(code){var error=null;if(code!==0){error="Command exited with code "+code}callback(error)})};var Build={clean:function clean(options,callback){var destination=options.build_directory;var contracts_build_directory=options.contracts_build_directory;del([destination+"/*","!"+contracts_build_directory]).then(function(){mkdirp(destination,callback)})},build:function build(options,callback){expect.options(options,["build_directory","working_directory","contracts_build_directory","networks"]);var builder=options.build;options.destination_directory=options.build_directory;if(typeof builder==="undefined"){if(!options.quiet){return callback(new BuildError("No build configuration specified. Can't build."))}return callback()}if(typeof builder==="string"){builder=new CommandBuilder(builder)}else if(typeof builder!=="function"){if(!builder.build){return callback(new BuildError("Build configuration can no longer be specified as an object. Please see our documentation for an updated list of supported build configurations."))}}else{builder={build:builder}}var clean=this.clean;if(builder.hasOwnProperty("clean")){clean=builder.clean}clean(options,function(err){if(err)return callback(err);Contracts.compile(options,function(err){if(err)return callback(err);builder.build(options,function(err){if(!err)return callback();if(typeof err==="string"){err=new BuildError(err)}callback(err)})})})}};module.exports=Build;