diff --git a/lib/index.js b/lib/index.js index abf2f2221..8812a2d60 100644 --- a/lib/index.js +++ b/lib/index.js @@ -274,7 +274,7 @@ class Embark { if (cmdPlugin) { async.waterfall([ - function buildDapp(callback){ + function (callback){ engine.logger.debug('building dapp...'); engine.startMonitor(); engine.startService("libraryManager"); @@ -284,23 +284,30 @@ class Embark { engine.startService("deployment"); engine.startService("ipfs"); + // 3. upload to storage (outputDone event triggered after webpack finished) engine.events.on('outputDone', function () { - engine.logger.debug('deploying...'); - cmdPlugin.uploadCmds[0].cb(); - callback(); + engine.logger.debug('deploying to ' + platform + '...'); + cmdPlugin.uploadCmds[0].cb() + .then((success) => { + callback(); + }) + .catch((err) => { + callback(err); + }); + }); - // build the contracts - engine.contractsManager.build(function(){ - // trigger code generation and dapp webpack + // 1. build the contracts + engine.deployManager.deployContracts(function (err) { + if(err){ + callback(err); + } + + // 2. trigger code generation and dapp webpack engine.events.emit('asset-changed', engine.contractsManager); }); - }, - function upload(callback){ - - callback(); } ], function (err, _result) { if (err) { diff --git a/lib/modules/ipfs/upload.js b/lib/modules/ipfs/upload.js index da9e6191b..508b01ad8 100644 --- a/lib/modules/ipfs/upload.js +++ b/lib/modules/ipfs/upload.js @@ -12,48 +12,51 @@ class IPFS { } deploy() { - console.log("deploying!"); - let self = this; - async.waterfall([ - function findBinary(callback) { - let ipfs_bin = shelljs.which(self.configIpfsBin); + return new Promise((resolve, reject) => { + console.log("deploying!"); + let self = this; + async.waterfall([ + function findBinary(callback) { + let ipfs_bin = shelljs.which(self.configIpfsBin); - if (ipfs_bin === 'ipfs not found' || !ipfs_bin) { - console.log(('=== WARNING: ' + self.configIpfsBin + ' not found or not in the path. Guessing ~/go/bin/ipfs for path').yellow); - ipfs_bin = "~/go/bin/ipfs"; + if (ipfs_bin === 'ipfs not found' || !ipfs_bin) { + console.log(('=== WARNING: ' + self.configIpfsBin + ' not found or not in the path. Guessing ~/go/bin/ipfs for path').yellow); + ipfs_bin = "~/go/bin/ipfs"; + } + + return callback(null, ipfs_bin); + }, + function runCommand(ipfs_bin, callback) { + let cmd = `"${ipfs_bin}" add -r ${self.buildDir}`; + console.log(("=== adding " + self.buildDir + " to ipfs").green); + console.log(cmd.green); + let result = shelljs.exec(cmd); + + return callback(null, result); + }, + function getHashFromOutput(result, callback) { + let rows = result.output.split("\n"); + let dir_row = rows[rows.length - 2]; + let dir_hash = dir_row.split(" ")[1]; + + return callback(null, dir_hash); + }, + function printUrls(dir_hash, callback) { + console.log(("=== DApp available at http://localhost:8080/ipfs/" + dir_hash + "/").green); + console.log(("=== DApp available at http://gateway.ipfs.io/ipfs/" + dir_hash + "/").green); + + return callback(); } - - return callback(null, ipfs_bin); - }, - function runCommand(ipfs_bin, callback) { - let cmd = `"${ipfs_bin}" add -r ${self.buildDir}`; - console.log(("=== adding " + self.buildDir + " to ipfs").green); - console.log(cmd.green); - let result = shelljs.exec(cmd); - - return callback(null, result); - }, - function getHashFromOutput(result, callback) { - let rows = result.output.split("\n"); - let dir_row = rows[rows.length - 2]; - let dir_hash = dir_row.split(" ")[1]; - - return callback(null, dir_hash); - }, - function printUrls(dir_hash, callback) { - console.log(("=== DApp available at http://localhost:8080/ipfs/" + dir_hash + "/").green); - console.log(("=== DApp available at http://gateway.ipfs.io/ipfs/" + dir_hash + "/").green); - - return callback(); - } - ], function (err, _result) { - if (err) { - console.log("error uploading to ipfs".red); - console.log(err); - } + ], function (err, _result) { + if (err) { + console.log("error uploading to ipfs".red); + console.log(err); + reject(err); + } + else resolve('successfully uploaded to ipfs'); + }); }); } - } module.exports = IPFS; diff --git a/lib/modules/swarm/upload.js b/lib/modules/swarm/upload.js index 4ba0a9b39..6d588f65e 100644 --- a/lib/modules/swarm/upload.js +++ b/lib/modules/swarm/upload.js @@ -9,46 +9,50 @@ class Swarm { } deploy() { - let self = this; - async.waterfall([ - function findBinary(callback) { - let swarm_bin = shelljs.which('swarm'); + return new Promise((resolve, reject) => { + let self = this; + async.waterfall([ + function findBinary(callback) { + let swarm_bin = shelljs.which('swarm'); - if (swarm_bin === 'swarm not found' || !swarm_bin) { - console.log('=== WARNING: Swarm not in an executable path. Guessing ~/go/bin/swarm for path'.yellow); - swarm_bin = "~/go/bin/swarm"; + if (swarm_bin === 'swarm not found' || !swarm_bin) { + console.log('=== WARNING: Swarm not in an executable path. Guessing ~/go/bin/swarm for path'.yellow); + swarm_bin = "~/go/bin/swarm"; + } + + return callback(null, swarm_bin); + }, + function runCommand(swarm_bin, callback) { + let cmd = `"${swarm_bin}" --defaultpath ${self.buildDir} index.html --recursive up ${self.buildDir}`; + console.log(("=== adding " + self.buildDir + " to swarm").green); + console.log(cmd.green); + let result = shelljs.exec(cmd); + + return callback(null, result); + }, + function getHashFromOutput(result, callback) { + if (result.code !== 0) { + return callback("couldn't upload, is the swarm daemon running?"); + } + + let rows = result.output.split("\n"); + let dir_hash = rows.reverse()[1]; + + return callback(null, dir_hash); + }, + function printUrls(dir_hash, callback) { + console.log(("=== DApp available at http://localhost:8500/bzz:/" + dir_hash + "/").green); + + return callback(); } - - return callback(null, swarm_bin); - }, - function runCommand(swarm_bin, callback) { - let cmd = `"${swarm_bin}" --defaultpath ${self.buildDir} index.html --recursive up ${self.buildDir}`; - console.log(("=== adding " + self.buildDir + " to swarm").green); - console.log(cmd.green); - let result = shelljs.exec(cmd); - - return callback(null, result); - }, - function getHashFromOutput(result, callback) { - if (result.code !== 0) { - return callback("couldn't upload, is the swarm daemon running?"); + ], function (err, _result) { + if (err) { + console.log("error uploading to swarm".red); + console.log(err); + reject(err); } - - let rows = result.output.split("\n"); - let dir_hash = rows.reverse()[1]; - - return callback(null, dir_hash); - }, - function printUrls(dir_hash, callback) { - console.log(("=== DApp available at http://localhost:8500/bzz:/" + dir_hash + "/").green); - - return callback(); - } - ], function (err, _result) { - if (err) { - console.log("error uploading to swarm".red); - console.log(err); - } + else resolve('successfully uploaded to swarm'); + }); }); } } diff --git a/test_apps/test_app/app/js/test.js b/test_apps/test_app/app/js/test.js index a4ba623cb..a4b9b260a 100644 --- a/test_apps/test_app/app/js/test.js +++ b/test_apps/test_app/app/js/test.js @@ -1,3 +1,12 @@ +import $ from 'jquery'; +import AlreadyDeployedToken from 'Embark/contracts/AlreadyDeployedToken'; +import AnotherStorage from 'Embark/contracts/AnotherStorage'; +import async from 'async'; +import MyToken from 'Embark/contracts/MyToken'; +import MyToken2 from 'Embark/contracts/MyToken2'; +import SimpleStorage from 'Embark/contracts/SimpleStorage'; +import Token from 'Embark/contracts/Token'; + $(document).ready(function() {