UNPKG

linespin

Version:
94 lines (67 loc) 2.01 kB
### Linespin - Simple Progress Output ### 'use strict' c = require './color' class Linespin _speed = undefined _stdout = process.stdout _spin = ['-', '\\', '|', '/'] _i = 0 constructor: (@message, @doneMessage, @speed) -> @state = 'stopped' @message ?= 'Please wait...' @doneMessage ?= 'Finished' @speed ?= 200 start: -> if @state is 'stopped' @state = 'running' _stdout.write "\n" _spinnerMessage @message _continue @ stop: (message) -> @state = 'stopped' _reset() _lastMessage message || @doneMessage pending: (message) -> _pendingMessage message success: (message) -> _successMessage message error: (message) -> _errorMessage message warn: (message) -> _warningMessage message msg: (message) -> _message message # Private Methods _reset = -> _i = 0 _continue = (_this) -> that = _this setTimeout -> that.start() if that.state is 'running' , that.speed _spinner = -> "#{_spin[_i = (_i+1) % 4]}" _prettify = (message, symbol, newline, replace, color1, color2) -> color2 ?= color1 bump = if newline then "\n\n" else "\n" override = if replace then "#{c.rewrite}#{c.rewrite}" else c.rewrite _stdout.write "#{override}#{c[color1]}[#{symbol}] #{c[color2]}#{message}#{c.reset}#{bump}" # Messages _spinnerMessage = (message) -> _prettify message, _spinner(), false, false, 'yellow', 'blue' _lastMessage = (message) -> _prettify message, '✓', false, false, 'green', 'blue' _successMessage = (message) -> _prettify message, '✓', true, true, 'green', 'grey' _pendingMessage = (message) -> _prettify message, '?', true, false, 'blue', 'white' _message = (message) -> _prettify message, '•', true, false, 'white' _errorMessage = (message) -> _prettify message, '!', true, false, 'red' _warningMessage = (message) -> _prettify message, '!', true, false, 'yellow' # Export module.exports = Linespin