UNPKG

1.22 kBtext/coffeescriptView Raw
1'use strict'
2
3Acho = require 'acho'
4DEFAULT = require './Bumped.default'
5MSG = require './Bumped.messages'
6noop = require('./Bumped.util').noop
7isArray = require('./Bumped.util').isArray
8isBoolean = require('./Bumped.util').isBoolean
9
10optsDefault =
11 lineBreak: true
12 output: true
13
14###*
15 * Unify error logging endpoint
16 * @param {Message} err Error structure based on Message.
17 * @param {Object} opts Configurable options
18 * @param {Object} [opts.lineBreak=true] Prints Line break
19 * @param {Function} cb [description]
20###
21errorHandler = (err, opts, cb) ->
22 if (arguments.length is 2 and typeof arguments[1] is 'function')
23 cb = opts
24 opts = optsDefault
25 else
26 opts = Object.assign optsDefault, opts
27 cb ||= noop
28
29 return cb err if @level is 'silent' or not opts.output
30
31 err = MSG.NOT_PROPERLY_FINISHED err if isBoolean err
32 printErrorMessage = (err) => @error err.message or err
33 process.stdout.write '\n' if opts.lineBreak
34 err = [err] unless isArray(err)
35
36 err.forEach printErrorMessage
37 cb err
38
39module.exports = (opts) ->
40 opts = Object.assign DEFAULT.logger, opts
41 logger = Acho opts
42 logger.errorHandler = errorHandler
43 logger