@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
JavaScript
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;
;