UNPKG

next

Version:

The React Framework

75 lines (74 loc) 2.58 kB
import { bold } from '../lib/picocolors'; // Copy-pasted from Commander's Help class -> formatHelp(). // TL;DR, we're overriding the built-in help to add a few niceties. // Link: https://github.com/tj/commander.js/blob/master/lib/help.js const formatCliHelpOutput = (cmd, helper)=>{ const termWidth = helper.padWidth(cmd, helper); const helpWidth = helper.helpWidth || 80; const itemIndentWidth = 2; const itemSeparatorWidth = 2 // between term and description ; 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)); } // Usage let output = [ `${bold('Usage:')} ${helper.commandUsage(cmd)}`, '' ]; // Description const commandDescription = helper.commandDescription(cmd); if (commandDescription.length > 0) { output = output.concat([ helper.wrap(commandDescription, helpWidth, 0), '' ]); } // Arguments 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), '' ]); } // Options 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), '' ]); } // Commands 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 }; //# sourceMappingURL=format-cli-help-output.js.map