1 | 'use strict'
|
2 |
|
3 | chalk = require 'chalk'
|
4 | ms = require 'pretty-ms'
|
5 | timeSpan = require 'time-span'
|
6 | DEFAULT = require './Bumped.default'
|
7 | MSG = require './Bumped.messages'
|
8 |
|
9 | TYPE_SHORTCUT =
|
10 | prerelease: 'pre'
|
11 | postrelease: 'post'
|
12 |
|
13 | module.exports = class Animation
|
14 |
|
15 | constructor: (params) ->
|
16 | @[param] = value for param, value of params
|
17 | @isPostRelease = @type is 'postrelease'
|
18 | @isPreRelease = @type is 'prerelease'
|
19 |
|
20 | start: (cb) ->
|
21 | @timespan = timeSpan()
|
22 | @running = true
|
23 | shortcut = TYPE_SHORTCUT[@type]
|
24 | process.stdout.write '\n' if @isPostRelease
|
25 |
|
26 | @logger.keyword = "#{chalk.magenta(shortcut)} #{@logger.keyword}"
|
27 | @logger.success "Starting #{chalk.cyan(@text)}"
|
28 | cb()
|
29 |
|
30 | stop: (err, cb) ->
|
31 | @running = false
|
32 |
|
33 | if err
|
34 | @logger.keyword = DEFAULT.logger.keyword
|
35 | return cb err
|
36 |
|
37 | end = ms @timespan()
|
38 | @logger.success "Finished #{chalk.cyan(@text)} after #{chalk.magenta(end)}."
|
39 | process.stdout.write '\n' if @isPreRelease
|
40 | @logger.keyword = DEFAULT.logger.keyword
|
41 | cb()
|
42 |
|
43 | @end: (opts) ->
|
44 | opts.logger.success MSG.CREATED_VERSION(opts.version)
|
45 | opts.logger.keyword = DEFAULT.logger.keyword
|