UNPKG

indexr

Version:

Automated dynamic indexes for your ES6+ source code.

59 lines (44 loc) 1.75 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.showExtendedHelp = undefined; exports.default = extendedHelp; var _linewrap = require('linewrap'); var _linewrap2 = _interopRequireDefault(_linewrap); var _capitalize = require('capitalize'); var _capitalize2 = _interopRequireDefault(_capitalize); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var repeat = function repeat(char, num) { return num > 0 ? '' + char + repeat(char, num - 1) : char; }; var getTitleFromFlags = function getTitleFromFlags(flags) { var optionLong = flags.match(/--[a-z0-9-_]+/)[0]; var optionLower = optionLong.replace('--', '').replace('-', ' '); return (0, _capitalize2.default)(optionLower); }; var templateHelp = function templateHelp(title, flags, description) { return '\n ' + title + '\n ' + repeat('-', title.length) + '\n ' + flags + '\n\n ' + description + '\n\n'; }; function applyOptionToCommander(comm, option) { var flags = option.flags; var description = option.description; var coercion = option.coercion; var defaults = option.default; comm.option(flags, description, coercion, defaults); return comm; } function templateOption(opt) { var flags = opt.flags; var title = getTitleFromFlags(flags); var description = (0, _linewrap2.default)(80, { lineBreak: '\n ' })(opt.long); return templateHelp(title, flags, description); } var showExtendedHelp = exports.showExtendedHelp = function showExtendedHelp(opts) { return function () { console.log(opts.map(templateOption).join('\n')); }; }; function extendedHelp(comm, opts) { return opts.reduce(applyOptionToCommander, comm).on('--help', showExtendedHelp(opts)); }