|
|
|
import packageJson from '../../../package.json' |
|
|
|
export function help({ message, usage, commands, options }) { |
|
let indent = 2 |
|
|
|
|
|
console.log() |
|
console.log(`${packageJson.name} v${packageJson.version}`) |
|
|
|
|
|
if (message) { |
|
console.log() |
|
for (let msg of message.split('\n')) { |
|
console.log(msg) |
|
} |
|
} |
|
|
|
|
|
if (usage && usage.length > 0) { |
|
console.log() |
|
console.log('Usage:') |
|
for (let example of usage) { |
|
console.log(' '.repeat(indent), example) |
|
} |
|
} |
|
|
|
|
|
if (commands && commands.length > 0) { |
|
console.log() |
|
console.log('Commands:') |
|
for (let command of commands) { |
|
console.log(' '.repeat(indent), command) |
|
} |
|
} |
|
|
|
|
|
if (options) { |
|
let groupedOptions = {} |
|
for (let [key, value] of Object.entries(options)) { |
|
if (typeof value === 'object') { |
|
groupedOptions[key] = { ...value, flags: [key] } |
|
} else { |
|
groupedOptions[value].flags.push(key) |
|
} |
|
} |
|
|
|
console.log() |
|
console.log('Options:') |
|
for (let { flags, description, deprecated } of Object.values(groupedOptions)) { |
|
if (deprecated) continue |
|
|
|
if (flags.length === 1) { |
|
console.log( |
|
' '.repeat(indent + 4 ), |
|
flags.slice().reverse().join(', ').padEnd(20, ' '), |
|
description |
|
) |
|
} else { |
|
console.log( |
|
' '.repeat(indent), |
|
flags.slice().reverse().join(', ').padEnd(24, ' '), |
|
description |
|
) |
|
} |
|
} |
|
} |
|
|
|
console.log() |
|
} |
|
|