1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- import process from 'node:process';
- import { y as yargsParser, t as trimNewlines, r as redent, n as normalizePackageData, c as camelcaseKeys } from './dependencies.js';
- import { buildOptions } from './options.js';
- import { buildParserOptions } from './parser.js';
- import { checkUnknownFlags, validate, checkMissingRequiredFlags } from './validate.js';
- const buildResult = (options, parserOptions) => {
- const {pkg: package_} = options;
- const argv = yargsParser(options.argv, parserOptions);
- let help = '';
- if (options.help) {
- help = trimNewlines((options.help || '').replace(/\t+\n*$/, ''));
- if (help.includes('\n')) {
- help = redent(help, options.helpIndent);
- }
- help = `\n${help}`;
- }
- normalizePackageData(package_);
- let {description} = options;
- if (!description && description !== false) {
- ({description} = package_);
- }
- description &&= help ? redent(`\n${description}\n`, options.helpIndent) : `\n${description}`;
- help = `${description || ''}${help}\n`;
- const showHelp = code => {
- console.log(help);
- process.exit(typeof code === 'number' ? code : 2);
- };
- const showVersion = () => {
- console.log(typeof options.version === 'string' ? options.version : package_.version);
- process.exit(0);
- };
- if (argv._.length === 0 && options.argv.length === 1) {
- if (argv.version === true && options.autoVersion) {
- showVersion();
- } else if (argv.help === true && options.autoHelp) {
- showHelp(0);
- }
- }
- const input = argv._;
- delete argv._;
- if (!options.allowUnknownFlags) {
- checkUnknownFlags(input);
- }
- const flags = camelcaseKeys(argv, {exclude: ['--', /^\w$/]});
- const unnormalizedFlags = {...flags};
- validate(flags, options);
- for (const flagValue of Object.values(options.flags)) {
- if (Array.isArray(flagValue.aliases)) {
- for (const alias of flagValue.aliases) {
- delete flags[alias];
- }
- }
- delete flags[flagValue.shortFlag];
- }
- checkMissingRequiredFlags(options.flags, flags, input);
- return {
- input,
- flags,
- unnormalizedFlags,
- pkg: package_,
- help,
- showHelp,
- showVersion,
- };
- };
- const meow = (helpText, options = {}) => {
- const parsedOptions = buildOptions(helpText, options);
- const parserOptions = buildParserOptions(parsedOptions);
- const result = buildResult(parsedOptions, parserOptions);
- process.title = result.pkg.bin ? Object.keys(result.pkg.bin).at(0) : result.pkg.name;
- return result;
- };
- export { meow as default };
|