UNPKG

2.41 kBJavaScriptView Raw
1/*
2 * commands
3 *
4 * shared functions between cli and grunt
5 * commands include prompts to ask the user for certain values
6 */
7
8'use strict';
9
10var chg = require('./chg.js');
11var prompt = require('prompt');
12var fs = require('fs');
13
14var commands = module.exports = {};
15
16commands.init = function(options, callback){
17 chg.init(options, callback);
18};
19
20commands.add = function(line, options, callback){
21 if (line) {
22 chg.add(line, options, callback);
23 } else {
24 textPrompt('Add one line to the changelog', {}, function(err, text){
25 if (err) { return callback(err); }
26 chg.add(text, {}, callback);
27 });
28 }
29};
30
31commands.release = function(version, options, callback){
32 options = options || {};
33
34 if (version) {
35 chg.release(version, options, callback);
36 } else {
37 // use current package.json version as the default prompt value
38 if (fs.existsSync('./package.json')) {
39 options.default = require(process.cwd() + '/package.json').version;
40 }
41
42 if (options.noprompt) {
43 if (!options.default) { return callback(new Error('Version number unknown, abort')); }
44 chg.release(options.default, options, callback);
45 } else {
46 textPrompt('What is the release version number?', options, function(err, text){
47 if (err) { return callback(err); }
48 chg.release(text, options, callback);
49 });
50 }
51
52 }
53};
54
55commands.find = function(version, options, callback){
56 options = options || {};
57
58 if (version) {
59 return chg.find(version, options, callback);
60 }
61
62 textPrompt('What release version number are you looking for?', options, function(err, text){
63 if (err) { return callback(err); }
64
65 chg.find(text, options, callback);
66 });
67};
68
69commands.delete = function(options, callback){
70 prompt.start();
71 prompt.get({
72 name: 'yesno',
73 message: 'Are you sure you want to delete the changelog?',
74 validator: /y[es]*|n[o]?/,
75 warning: 'Must respond yes or no',
76 default: 'yes'
77 }, function (err) {
78 if (err) { return callback(err); }
79 chg.delete(options, callback);
80 });
81};
82
83function textPrompt(message, options, callback){
84 if (!options) {
85 callback = options;
86 options = {};
87 }
88
89 options.name = 'text';
90 options.message = message;
91 options.required = true;
92
93 prompt.start();
94 prompt.get(options, function (err, result) {
95 if (err) {
96 return callback(err);
97 }
98 callback(null, result.text);
99 });
100}