1 | #!/usr/bin/env node
|
2 | 'use strict'
|
3 | require('coffeescript').register()
|
4 | var fs = require('fs')
|
5 | var Bumped = require('./../lib/Bumped')
|
6 | var updateNotifier = require('update-notifier')
|
7 | var partial = require('lodash.partial')
|
8 | var cli = require('meow')({
|
9 | pkg: require('../package.json'),
|
10 | help: fs.readFileSync(__dirname + '/help.txt', 'utf8')
|
11 | })
|
12 |
|
13 | updateNotifier({ pkg: cli.pkg }).notify()
|
14 | if (cli.input.length === 0) cli.showHelp()
|
15 |
|
16 | var bumped = new Bumped()
|
17 | var command = cli.input.shift()
|
18 |
|
19 | var exit = function (err) {
|
20 | if (!err) return process.exit()
|
21 | if (!Array.isArray(err)) err = [err]
|
22 | var code = err[err.length - 1].code || 1
|
23 | return process.exit(code || 1)
|
24 | }
|
25 |
|
26 | var commands = {
|
27 | init: partial(bumped.init, exit),
|
28 | version: partial(bumped.semver.version, exit),
|
29 |
|
30 | release: partial(
|
31 | bumped.semver.release,
|
32 | {
|
33 | version: cli.input[0],
|
34 | prefix: cli.input[1]
|
35 | },
|
36 | exit
|
37 | ),
|
38 |
|
39 | add: partial(
|
40 | bumped.config.add,
|
41 | {
|
42 | detect: true,
|
43 | save: true,
|
44 | file: cli.input[0]
|
45 | },
|
46 | exit
|
47 | ),
|
48 |
|
49 | remove: partial(
|
50 | bumped.config.remove,
|
51 | {
|
52 | save: true,
|
53 | file: cli.input[0]
|
54 | },
|
55 | exit
|
56 | ),
|
57 |
|
58 | set: (function () {
|
59 | var property = cli.input[0]
|
60 | cli.input.shift()
|
61 | var value = cli.input.join(' ')
|
62 | return partial(
|
63 | bumped.config.set,
|
64 | {
|
65 | property: property,
|
66 | value: value
|
67 | },
|
68 | exit
|
69 | )
|
70 | })()
|
71 | }
|
72 |
|
73 | var existCommand = Object.keys(commands).indexOf(command) > -1
|
74 |
|
75 | if (!existCommand) return cli.showHelp()
|
76 |
|
77 | process.stdout.write('\n')
|
78 |
|
79 | if (command === 'init') return commands[command]()
|
80 |
|
81 | return bumped.load(function (err) {
|
82 | if (err) throw err
|
83 | return commands[command]()
|
84 | })
|