Files
NapCatQQ/.pnpm-store/v3/files/58/35c625bf34bebe8295f7ab78c319917cd16d9d6ae35c05545decb954d75ae37dbcb865fcb6ffba5d61d8381ec64b4819e251abef5a685a05aae38aa5838a6e
TanTan e311ca3275
Build NapCat Artifacts / Windows Loader Test (push) Canceled after 0s
Build NapCat Artifacts / Type Check & Test (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Framework (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Shell (push) Canceled after 0s
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

76 lines
2.0 KiB
Plaintext

import { defaultFlags } from './flags.js';
import {
getHelpListMaxNamePadding,
formatGroupedFlagList,
formatGroupedHelpList,
} from './format-lists.js';
/**
* @param {string} name
* @param {Readonly<import('./help-list-types.js').HelpMessageInfo>} info
* @returns {string}
*/
export function formatHelpMessage (name, info = {}) {
const {
aliases = {},
commands = {},
examples = [],
flags = {},
indent = 2,
noDefaultFlags = false,
usage = '',
} = info;
const aliasesWithGroups = Object.fromEntries(
Object.entries(aliases).map(
([key, { listGroup, ...value }]) => [key, {
listGroup: (listGroup ? listGroup + ' ' : '') + 'Aliases',
...value,
}]
)
);
const commandList = { ...aliasesWithGroups, ...commands };
const flagList = { ...flags, ...(noDefaultFlags ? {} : defaultFlags) };
const padName = Math.max(
getHelpListMaxNamePadding(commandList),
getHelpListMaxNamePadding(flagList, { keyPrefix: '--' })
);
/** @type {import('./format-lists.js').HelpListGroupOptions} */
const listOptions = { fixedPadName: true, padName };
return (
''.padEnd(indent) + 'Usage\n' +
''.padEnd(indent + 2) + `$ ${name} ${usage}\n` +
formatGroupedHelpList(commandList, indent, { defaultGroupName: 'Commands', defaultGroupOrderFirst: true, ...listOptions }) +
formatGroupedFlagList(flagList, indent, listOptions) +
(
examples.length
? '\n' + ''.padEnd(indent) + ['Examples', ...formatExamples(name, examples)].join('\n' + ''.padEnd(indent + 2))
: ''
)
);
}
/**
* @param {string} name
* @param {NonNullable<import('./help-list-types.js').HelpMessageInfo["examples"]>} examples
* @returns {string[]}
*/
function formatExamples (name, examples) {
/** @type {string[]} */
const result = [];
for (const item of examples) {
if (typeof item === 'string') {
result.push(`$ ${name} ${item}`);
} else {
result.push(`$ ${item.prefix ? item.prefix + ' ' : ''}${name} ${item.suffix || ''}`);
}
}
return result;
}