1 | 'use strict'
|
2 |
|
3 | jsonFuture = require 'json-future'
|
4 | finepack = require 'finepack'
|
5 | path = require 'path'
|
6 | async = require 'async'
|
7 | chalk = require 'chalk'
|
8 |
|
9 | printMessage = (logger, filename, type, messages) ->
|
10 | color = if type is 'warn' then 'yellow' else 'red'
|
11 | colorize = chalk[color]
|
12 | logger.transport logger.generateMessage type, "#{filename}: #{colorize(message)}" for message in messages
|
13 |
|
14 | module.exports = (bumped, plugin, cb) ->
|
15 | globalError = false
|
16 |
|
17 | async.eachSeries bumped.config.rc.files, (filename, next) ->
|
18 | jsonFuture.loadAsync filename, (err, pkg) ->
|
19 | return cb err if err
|
20 |
|
21 | finepack pkg, plugin.opts, (err, newPkg, messages) ->
|
22 | return cb err if err
|
23 | localError = false
|
24 |
|
25 | if messages.error.length isnt 0
|
26 | printMessage plugin.logger, filename, 'error', messages.error
|
27 | globalError = true
|
28 | localError = true
|
29 |
|
30 | if messages.warn.length isnt 0
|
31 | printMessage plugin.logger, filename, 'warn', messages.warn
|
32 |
|
33 | return next(true) if localError
|
34 | jsonFuture.saveAsync filename, newPkg, next
|
35 | , ->
|
36 | cb globalError
|