| import { bold } from '../lib/picocolors'; |
| |
| |
| |
| const formatCliHelpOutput = (cmd, helper)=>{ |
| const termWidth = helper.padWidth(cmd, helper); |
| const helpWidth = helper.helpWidth || 80; |
| const itemIndentWidth = 2; |
| const itemSeparatorWidth = 2 |
| ; |
| function formatItem(term, description) { |
| let value = term; |
| if (description) { |
| if (term === 'directory') { |
| value = `[${term}]`; |
| } |
| const fullText = `${value.padEnd(termWidth + itemSeparatorWidth)}${description}`; |
| return helper.wrap(fullText, helpWidth - itemIndentWidth, termWidth + itemSeparatorWidth); |
| } |
| return term; |
| } |
| function formatList(textArray) { |
| return textArray.join('\n').replace(/^/gm, ' '.repeat(itemIndentWidth)); |
| } |
| |
| let output = [ |
| `${bold('Usage:')} ${helper.commandUsage(cmd)}`, |
| '' |
| ]; |
| |
| const commandDescription = helper.commandDescription(cmd); |
| if (commandDescription.length > 0) { |
| output = output.concat([ |
| helper.wrap(commandDescription, helpWidth, 0), |
| '' |
| ]); |
| } |
| |
| const argumentList = helper.visibleArguments(cmd).map((argument)=>{ |
| return formatItem(helper.argumentTerm(argument), helper.argumentDescription(argument)); |
| }); |
| if (argumentList.length > 0) { |
| output = output.concat([ |
| `${bold('Arguments:')}`, |
| formatList(argumentList), |
| '' |
| ]); |
| } |
| |
| const optionList = helper.visibleOptions(cmd).map((option)=>{ |
| return formatItem(helper.optionTerm(option), helper.optionDescription(option)); |
| }); |
| if (optionList.length > 0) { |
| output = output.concat([ |
| `${bold('Options:')}`, |
| formatList(optionList), |
| '' |
| ]); |
| } |
| |
| const commandList = helper.visibleCommands(cmd).map((subCmd)=>{ |
| return formatItem(helper.subcommandTerm(subCmd), helper.subcommandDescription(subCmd)); |
| }); |
| if (commandList.length > 0) { |
| output = output.concat([ |
| `${bold('Commands:')}`, |
| formatList(commandList), |
| '' |
| ]); |
| } |
| return output.join('\n'); |
| }; |
| export { formatCliHelpOutput }; |
|
|
| |