UNPKG

851 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(
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};