forked from conventional-changelog/commitlint
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhelp.js
32 lines (30 loc) · 987 Bytes
/
help.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
module.exports = configuration => {
const lines = Object.entries(configuration.description).map(entry => {
const name = entry[0];
const desc = entry[1];
const alias = Object.entries(configuration.alias)
.find(entry => entry[1] === name)
.map(entry => entry[0])[0];
const defaults = configuration.default[name];
return [[name, alias].filter(Boolean), desc, defaults].filter(Boolean);
});
const longest = lines
.map(line => {
const flags = line[0];
return flags.reduce((sum, flag) => sum + flag.length, 0);
})
.sort(Number)[0];
return lines
.map(line => {
const flags = line[0];
const desc = line[1];
const defaults = line[2];
const fs = flags.map(
flag => (flag.length > 1 ? `--${flag}` : ` -${flag}`)
);
const ds = defaults ? `, defaults to: ${defaults}` : '';
const length = flags.reduce((sum, flag) => sum + flag.length, 0);
return `${fs.join(',')}${' '.repeat(4 + longest - length)}${desc}${ds}`;
})
.join('\n');
};