UNPKG

ionic

Version:

A tool for creating and developing Ionic Framework mobile apps.

61 lines (51 loc) 1.32 kB
var ProgressBar = require('progress'); function Multibar(stream) { this.stream = stream || process.stderr; this.cursor = 0; this.bars = []; this.terminates = 0; } Multibar.prototype = { newBar: function(schema, options) { options.stream = this.stream; var bar = new ProgressBar(schema, options); this.bars.push(bar); var index = this.bars.length - 1; // alloc line this.move(index); this.stream.write('\n'); this.cursor += 1; // replace original var self = this; bar.otick = bar.tick; bar.oterminate = bar.terminate; bar.tick = function(value, options) { self.tick(index, value, options); }; bar.terminate = function() { self.terminates += 1; if (self.terminates === self.bars.length) { self.terminate(); } }; return bar; }, terminate: function() { this.move(this.bars.length); this.stream.clearLine(); this.stream.cursorTo(0); }, move: function(index) { if (!this.stream.isTTY) return; this.stream.moveCursor(0, index - this.cursor); this.cursor = index; }, tick: function(index, value, options) { var bar = this.bars[index]; if (bar) { this.move(index); bar.otick(value, options); } } }; module.exports = new Multibar();