exports.spin = function () { var message = Array.prototype.join.call(arguments, ' ') var states = [chalk.cyan(' . '), chalk.cyan(' .. '), chalk.cyan(' ... '), chalk.cyan(' ')] if (!TTY) { console.log(PROGRESS + ' ' + message) return function (err) { if (!err) return console.log(SUCCESS + ' ' + message) console.log(ERROR + ' ' + message + ' (' + (err.message || err) + ')') process.exit(1) } } var id = setInterval(function () { log(PROGRESS + ' ' + message + states[0]) states.push(states.shift()) }, 500) log.clear() log(PROGRESS + ' ' + message + ' ') return function (err) { clearInterval(id) if (err) { log(ERROR + ' ' + message + ' (' + (err.message || err) + ')') process.exit(1) } log(SUCCESS + ' ' + message) log.clear() } }
engine.on('mount', function(mnt) { log('Mounted '+engine.files.length+' files, '+prettysize(engine.torrent.length)+' in '+ engine.torrent.name); log.clear(); var notChoked = function(result, wire) { return result + (wire.peerChoking ? 0 : 1); }; var status = function() { var down = prettysize(engine.swarm.downloaded); var speed = prettysize(engine.swarm.downloadSpeed())+'/s'; log('Downloaded '+down+' ('+speed+') from '+engine.swarm.wires.reduce(notChoked, 0)+'/'+engine.swarm.wires.length+' peers\n'); }; setInterval(status, 500); status(); var onclose = function() { engine.destroy(function() { umount(mnt) setTimeout(function() { rimraf.sync(mnt); process.exit(); }, 250); }); }; process.on('SIGINT', onclose); process.on('SIGTERM', onclose); });
return function (err) { clearInterval(id) if (err) { log(ERROR + ' ' + message + ' (' + (err.message || err) + ')') process.exit(1) } log(SUCCESS + ' ' + message) log.clear() }
eos(prog, function(err) { draw() clearInterval(interval) if (err) clearLog.clear() else if (end) console.log(end) })