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