indexr
Version:
Automated dynamic indexes for your ES6+ source code.
59 lines (44 loc) • 1.75 kB
JavaScript
;
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));
}