UNPKG

857 BJavaScriptView Raw
1module.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(flag =>
25 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(
30 Math.max(4 + longest - length, 0)
31 )}${desc}${ds}`;
32 })
33 .join('\n');
34};