UNPKG

4.57 kBJavaScriptView Raw
1#!/usr/bin/env node
2'use strict';
3
4// Assemble the engine
5
6let main = function () {
7 var ref = _asyncToGenerator(function* (options) {
8 const raw = options.input;
9 const flags = options.flags;
10
11 const fromStdin = rules.fromStdin(raw, flags);
12
13 const input = fromStdin ? [yield (0, _getStdin2.default)()] : yield (0, _.getMessages)((0, _lodash.pick)(flags, 'edit', 'from', 'to'));
14
15 return Promise.all(input.map((() => {
16 var ref = _asyncToGenerator(function* (commit) {
17 const fmt = new _chalk2.default.constructor({ enabled: flags.color });
18
19 const seed = {};
20 if (flags.extends) {
21 seed.extends = flags.extends.split(',');
22 }
23
24 const report = yield (0, _2.default)(commit, {
25 preset: yield (0, _.getPreset)(flags.preset),
26 configuration: yield (0, _.getConfiguration)('conventional-changelog-lint', {
27 prefix: 'conventional-changelog-lint-config'
28 }, seed)
29 });
30
31 const formatted = (0, _.format)(report, {
32 color: flags.color,
33 signs: [' ', '⚠', '✖'],
34 colors: ['white', 'yellow', 'red']
35 });
36
37 if (!flags.quiet) {
38 console.log(`${ fmt.grey('⧗') } input: ${ fmt.bold(commit.split('\n')[0]) }`);
39 console.log(formatted.join('\n'));
40 }
41
42 if (report.errors.length > 0) {
43 const error = new Error(formatted[formatted.length - 1]);
44 error.type = _package2.default.name;
45 throw error;
46 }
47
48 return console.log('');
49 }),
50 _this = this;
51
52 return function (_x2) {
53 return ref.apply(_this, arguments);
54 };
55 })()));
56 });
57
58 return function main(_x) {
59 return ref.apply(this, arguments);
60 };
61}();
62
63// Start the engine
64
65
66require('babel-polyfill');
67
68var _chalk = require('chalk');
69
70var _chalk2 = _interopRequireDefault(_chalk);
71
72var _meow = require('meow');
73
74var _meow2 = _interopRequireDefault(_meow);
75
76var _lodash = require('lodash');
77
78var _getStdin = require('get-stdin');
79
80var _getStdin2 = _interopRequireDefault(_getStdin);
81
82var _help = require('./help');
83
84var _help2 = _interopRequireDefault(_help);
85
86var _ = require('./');
87
88var _2 = _interopRequireDefault(_);
89
90var _package = require('../package');
91
92var _package2 = _interopRequireDefault(_package);
93
94function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
95
96function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { return step("next", value); }, function (err) { return step("throw", err); }); } } return step("next"); }); }; }
97// polyfills
98
99
100// npm modules
101
102
103// local modules
104
105
106/**
107 * Behavioural rules
108 */
109const rules = {
110 fromStdin: (input, flags) => input.length === 0 && flags.from === null && flags.to === null && !flags.edit
111};
112
113const configuration = {
114 // flags of string type
115 string: ['from', 'to', 'preset', 'extends'],
116 // flags of array type
117 // flags of bool type
118 boolean: ['edit', 'help', 'version', 'quiet', 'color'],
119 // flag aliases
120 alias: {
121 c: 'color',
122 e: 'edit',
123 f: 'from',
124 p: 'preset',
125 t: 'to',
126 q: 'quiet',
127 h: 'help',
128 v: 'version',
129 x: 'extends'
130 },
131 description: {
132 color: 'toggle formatted output',
133 edit: 'read last commit message found in ./git/COMMIT_EDITMSG',
134 extends: 'array of shareable configurations to extend',
135 from: 'lower end of the commit range to lint; applies if edit=false',
136 preset: 'conventional-changelog-preset to use for commit message parsing',
137 to: 'upper end of the commit range to lint; applies if edit=false',
138 quiet: 'toggle console output'
139 },
140 // flag defaults
141 default: {
142 color: true,
143 edit: false,
144 from: null,
145 preset: 'angular',
146 to: null,
147 quiet: false
148 },
149 // fail on unknown
150 unknown(arg) {
151 throw new Error(`unknown flags: ${ arg }`);
152 }
153};
154
155// Init meow 😸cli
156const cli = (0, _meow2.default)({
157 help: `[input] reads from stdin if --edit, --from, --to are omitted\n${ (0, _help2.default)(configuration) }`,
158 description: `${ _package2.default.name }@${ _package2.default.version } - ${ _package2.default.description }`
159}, configuration);main(cli).catch(error => setTimeout(() => {
160 if (error.type === _package2.default.name) {
161 process.exit(1);
162 }
163 throw error;
164}));
165
166// Catch unhandled rejections globally
167process.on('unhandledRejection', (reason, promise) => {
168 console.log('Unhandled Rejection at: Promise ', promise, ' reason: ', reason);
169 throw reason;
170});
\No newline at end of file