Changes
- (derive)
Vec<Vec<T>>types are now assuming to capture occurrences - (derive)
ValueEnumvariants now use the full doc comment, not summary, forPossibleValue::help
Features
- (derive) Group values by their occurrence with
Vec<Vec<T>>
Command line argument parser
Vec<Vec<T>> types are now assuming to capture occurrencesValueEnum variants now use the full doc comment, not summary, for PossibleValue::helpVec<Vec<T>>A library for node.js to build command-line interfaces (CLI). With its help, making a simple CLI application is a trivial task. It equally excels in complex tools with a lot of subcommands and specific features. This library supports argument coercion and completion suggestion — typing the commands is much easier.
Inspired by commander.js
Features:
npm install clapconst cli = require('clap');const myCommand = cli.command('my-command [optional-arg]') .description('Optional description') .version('1.2.3') .option('-b, --bool', 'Bollean option') .option('--foo <foo>', 'Option with required argument') .option('--bar [bar]', 'Option with optional argument') .option('--baz [value]', 'Option with optional argument and normalize function', value => Number(value), 123 // 123 is default ) .action(function({ options, args, literalArgs }) { // options is an object with collected values // args goes before options // literal args goes after "--" });myCommand.run(); // the same as "myCommnad.run(process.argv.slice(2))"myCommand.run(['--foo', '123', '-b'])// sub-commandsmyCommand .command('nested') .option('-q, --quz', 'Some parameter', 'Default value') // ... .end() .command('another-command [arg1] [arg2]') // ... .command('level3-command') //....command() // definition .description(value) .version(value, usage, description, action) .help(usage, description, action) .option(usage, description, ...options) .command(usageOrCommand) .extend(fn, ...options) .end() // argv processing pipeline handler setters .init(command, context) .applyConfig(context) .finishContext(context) .action(context) // main methods .parse(argv, suggest) .run(argv) // misc .clone(deep) .createOptionValues() .getCommand(name) .getCommands() .getOption(name) .getOptions() .outputHelp()There are two usage:
.option(usage, description, normalize, value).option(usage, description, options)Where options:
{ default: any, // default value normalize: (value, oldValue) => { ... }, // any value for option is passing through this function and its result stores as option value shortcut: (value, oldValue) => { ... }, // for shortcut options, the handler is executed after the value is set, and its result (an object) is used as a source of values for other options action: () => { ... }, // for an action option, which breaks regular args processing and preform and action (e.g. show help or version) config: boolean // mark option is about config and should be applied before `applyConfig()`}init(command, context) // before arguments parsingapplyConfig(context)finishContext(context) // after arguments parsinginit(command, context)applyConfig(context)finishContext(context) // after arguments parsingaction(context) -> command is targetaction(context) -> command is targetMIT
Elige dos releases con notas de changelog para revisar los cambios.
Aqui solo se muestran releases con notas de changelog disponibles.