1 | const entries = require('core-js/fn/object/entries');
|
2 |
|
3 | module.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 | };
|