1 | module.exports = flags => {
|
2 | const lines = Object.entries(flags).map(entry => {
|
3 | const name = entry[0];
|
4 | const value = entry[1];
|
5 | return [
|
6 | [name, value.alias].filter(Boolean),
|
7 | value.description,
|
8 | value.default
|
9 | ].filter(Boolean);
|
10 | });
|
11 |
|
12 | const longest = lines
|
13 | .map(line => {
|
14 | const flags = line[0];
|
15 | return flags.reduce((sum, flag) => sum + flag.length, 0);
|
16 | })
|
17 | .sort((a, b) => b - a)[0];
|
18 |
|
19 | return lines
|
20 | .map(line => {
|
21 | const flags = line[0];
|
22 | const desc = line[1];
|
23 | const defaults = line[2];
|
24 | const fs = flags.map(
|
25 | flag => (flag.length > 1 ? `--${flag}` : ` -${flag}`)
|
26 | );
|
27 | const ds = defaults ? `, defaults to: ${defaults}` : '';
|
28 | const length = flags.reduce((sum, flag) => sum + flag.length, 0);
|
29 | return `${fs.join(',')}${' '.repeat(Math.max(4 + longest - length, 0))}${desc}${ds}`;
|
30 | })
|
31 | .join('\n');
|
32 | };
|