%PDF- %PDF-
Direktori : /usr/lib/node_modules/pm2/lib/API/ |
Current File : //usr/lib/node_modules/pm2/lib/API/Spinner.js |
/** * Spinner * Handle TTY and non-TTY based terminals */ var defaultSpinnerString = [ "⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏" ].join(''); var InteractiveSpinner = function(textToShow){ this.text = textToShow || ''; this.setSpinnerString(defaultSpinnerString); // use default spinner string }; InteractiveSpinner.setDefaultSpinnerString = function(value) { defaultSpinnerString = value; }; InteractiveSpinner.prototype.start = function() { var current = 0; var self = this; this.id = setInterval(function() { try { process.stdout.clearLine(); process.stdout.cursorTo(0); process.stdout.write(self.chars[current] + ' ' + self.text); current = ++current % self.chars.length; } catch(e) { // ignore error if term is not tty, just display nothing } }, 80); }; InteractiveSpinner.prototype.setSpinnerString = function(str) { this.chars = str.split(""); }; InteractiveSpinner.prototype.stop = function() { try { process.stdout.clearLine(); process.stdout.cursorTo(0); } catch(e) {} clearInterval(this.id); }; /** * Display dots if non TTY terminal */ var StaticSpinner = function(text) { console.log(text); } StaticSpinner.prototype.start = function() { this.interval = setInterval(function() { process.stdout.write('.'); }, 500); }; StaticSpinner.prototype.stop = function() { clearInterval(this.interval); console.log(); }; module.exports = function(text) { if (process.stdout.isTTY) return new InteractiveSpinner(text); else return new StaticSpinner(text); };