UNPKG

@codeque/cli

Version:

Multiline code search for every language. Structural code search for JavaScript, TypeScript, HTML and CSS

54 lines (46 loc) 2.04 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const dedent_1 = __importDefault(require("dedent")); const programName = 'codeque'; const header = (level, ...text) => '#'.repeat(level) + ' ' + text.join(' '); const code = (...text) => '`' + text.join(' ') + '`'; const codeBlock = (...text) => '```sh\n' + text.join(' ') + '\n```'; const requiredStr = '**required**'; const optionalStr = '_optional_'; const filterFalsy = (array) => array.filter((val) => val); function template(commands, headerLevel) { return (0, dedent_1.default)(commands .map((cmd) => { const headerText = cmd.isRoot ? 'Root command' : 'Command'; const headerCode = cmd.isRoot ? code(programName) : code(cmd.name); return ` ${header(headerLevel, headerText, headerCode)} ${cmd.description || 'Description not available'} ${header(headerLevel + 1, 'Usage')} ${codeBlock(...filterFalsy([ programName, cmd.name, ...cmd.arguments.map((arg) => arg.nameRaw), cmd.options.length > 0 ? '[options]' : undefined, ]))} ${cmd.arguments.length > 0 ? header(headerLevel + 1, 'Arguments') : ''} ${cmd.arguments .map(({ name, required, description }) => (0, dedent_1.default) ` * ${code(name)} - ${description} (${required ? requiredStr : optionalStr}) `) .join('\n')} ${cmd.options.length > 0 ? header(headerLevel + 1, 'Options') : ''} ${cmd.options .map(({ shortName, longName, argument, required, description }) => (0, dedent_1.default) ` * ${code(filterFalsy([shortName, longName]).join(', ') + (argument ? ` ${argument}` : ''))} - ${description} (${required ? requiredStr : optionalStr}) `) .join('\n')} `; }) .join('\n')); } exports.default = template;