From 26f2ad7407a251e283c92325f15520e80528e4e3 Mon Sep 17 00:00:00 2001 From: Iuri Matias Date: Sun, 8 Jan 2017 13:19:27 -0500 Subject: [PATCH] refactor ipfs and swarm code --- lib/ipfs.js | 50 ++++++++++++++++++++++++++++++++++++-------------- lib/swarm.js | 51 ++++++++++++++++++++++++++++++++++++++------------- 2 files changed, 74 insertions(+), 27 deletions(-) diff --git a/lib/ipfs.js b/lib/ipfs.js index 38b2bfed..1c79c907 100644 --- a/lib/ipfs.js +++ b/lib/ipfs.js @@ -1,4 +1,5 @@ var colors = require('colors'); +var async = require('async'); var IPFS = function(options) { this.options = options; @@ -6,24 +7,45 @@ var IPFS = function(options) { }; IPFS.prototype.deploy = function() { - var ipfs_bin = exec('which ipfs').output.split("\n")[0]; + var self = this; + async.waterfall([ + function findBinary(callback) { + var ipfs_bin = exec('which ipfs').output.split("\n")[0]; - if (ipfs_bin==='ipfs not found'){ - console.log('=== WARNING: IPFS not in an executable path. Guessing ~/go/bin/ipfs for path'.yellow); - ipfs_bin = "~/go/bin/ipfs"; - } + if (ipfs_bin==='ipfs not found'){ + console.log('=== WARNING: IPFS not in an executable path. Guessing ~/go/bin/ipfs for path'.yellow); + ipfs_bin = "~/go/bin/ipfs"; + } - var cmd = ipfs_bin + " add -r " + this.buildDir; - console.log(("=== adding " + this.buildDir + " to ipfs").green); - console.log(cmd.green); + return callback(null, ipfs_bin); + }, + function runCommand(ipfs_bin, callback) { + var cmd = ipfs_bin + " add -r " + self.buildDir; + console.log(("=== adding " + self.buildDir + " to ipfs").green); + console.log(cmd.green); + var result = exec(cmd); - var result = exec(cmd); - var rows = result.output.split("\n"); - var dir_row = rows[rows.length - 2]; - var dir_hash = dir_row.split(" ")[1]; + return callback(null, result); + }, + function getHashFromOutput(result, callback) { + var rows = result.output.split("\n"); + var dir_row = rows[rows.length - 2]; + var dir_hash = dir_row.split(" ")[1]; - 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(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); + } + }); }; module.exports = IPFS; diff --git a/lib/swarm.js b/lib/swarm.js index a7f6cc75..1ebb36bb 100644 --- a/lib/swarm.js +++ b/lib/swarm.js @@ -1,4 +1,5 @@ var colors = require('colors'); +var async = require('async'); var Swarm = function(options) { this.options = options; @@ -6,24 +7,48 @@ var Swarm = function(options) { }; Swarm.prototype.deploy = function() { - var swarm_bin = exec('which swarm').output.split("\n")[0]; + var self = this; + async.waterfall([ + function findBinary(callback) { + var swarm_bin = exec('which swarm').output.split("\n")[0]; - 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"; + } - var cmd = swarm_bin + " --defaultpath " + this.buildDir + "index.html --recursive up " + this.buildDir; - console.log(("=== adding " + this.buildDir + " to swarm").green); - console.log(cmd.green); + return callback(null, swarm_bin); + }, + function runCommand(swarm_bin, callback) { + var cmd = swarm_bin + " --defaultpath " + self.buildDir + "index.html --recursive up " + self.buildDir; + console.log(("=== adding " + self.buildDir + " to swarm").green); + console.log(cmd.green); + var result = exec(cmd); - var result = exec(cmd); - var rows = result.output.split("\n"); - var dir_hash = rows.reverse()[1]; + return callback(null, result); + }, + function getHashFromOutput(result, callback) { + if (result.code !== 0) { + return callback("couldn't upload, is the swarm daemon running?"); + } - console.log(("=== DApp available at http://localhost:8500/bzz:/" + dir_hash + "/").green); + var rows = result.output.split("\n"); + var 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); + } + }); }; module.exports = Swarm; -