UNPKG

1.11 kBJavaScriptView Raw
1const entries = require('core-js/fn/object/entries');
2
3module.exports = configuration => {
4 const lines = entries(configuration.description)
5 .map(entry => {
6 const name = entry[0];
7 const desc = entry[1];
8 const alias = Object.entries(configuration.alias)
9 .find(entry => entry[1] === name)
10 .map(entry => entry[0])[0];
11 const defaults = configuration.default[name];
12 return [[name, alias].filter(Boolean), desc, defaults]
13 .filter(item => item !== null && typeof item !== 'undefined');
14 });
15
16 const longest = lines
17 .map(line => {
18 const flags = line[0];
19 return flags.reduce((sum, flag) => sum + flag.length, 0);
20 })
21 .sort(Number)[0];
22
23 return lines
24 .map(line => {
25 const flags = line[0];
26 const desc = line[1];
27 const defaults = line[2];
28 const fs = flags.map(flag => flag.length > 1 ? `--${flag}` : `-${flag}`);
29 const ds = typeof defaults === 'undefined' ? '' : `, defaults to: ${defaults}`;
30 const length = flags.reduce((sum, flag) => sum + flag.length, 0);
31 return `${fs.join(',')}${' '.repeat(7 + longest - length)}${desc}${ds}`;
32 })
33 .join('\n');
34};