Features#
Feature | |
---|---|
Commands | |
Define commands as methods | docs ✔️ |
Parameter Resolvers Inject console and other contexts as a parameter: IConsole, CommandContext, CancellationToken & IPrompter by default. |
docs ✔️ |
Infinite nesting of subcommands | docs ✔️ |
Nested classes | ✔️ |
Composed classes | ✔️ |
Command interception interceptors for subcommands middleware for all commands |
✔️ |
Method interception CommandContext.InvocationPipeline to access method and params |
✔️ |
Arguments | |
Positional (Operands) | docs ✔️ |
Named (Options) | docs ✔️ |
short and long names: -h or --help , not /help |
✔️ |
flags: -a instead of -a true |
docs ✔️ |
bundling/clubbing: -a -b -c or -abc |
docs ✔️ |
value assignments: -a one , -a=one & -a:one |
docs ✔️ |
Define arguments as parameters in methods | docs ✔️ |
Define arguments as properties in POCOs | docs ✔️ |
Data Types | |
Primitives, Enums & Nullable< T > | docs ✔️ |
Collections | docs ✔️ |
Dictionaries | #251 ❌ |
Password: mask value in logs and output with ***** |
docs ✔️ |
Any type with a string constructor | docs ✔️ |
Any type with a TypeConverter | docs ✔️ |
Custom Type Descriptors Customize parsing and the type name shown in help and |
docs ✔️ |
Define allowed values by type Allowed values are shown in help and will soon be used for suggestions |
docs ✔️ |
Argument Values | |
Response Files | docs ✔️ |
Piped Input | docs ✔️ |
Streaming | docs ✔️ |
Prompts | docs ✔️ |
Hide passwords | docs ✔️ |
Multi-entry for collections | docs ✔️ |
Auto prompt for missing arguments (optional) | docs ✔️ |
Default from EnvVar | docs ✔️ |
Default from AppSetting | docs ✔️ |
Validation | |
FluentValidation for argument models | docs ✔️ |
Data Annotations | #253 ❌ |
Help | |
Autocomplete | #48 ❌ |
Typo suggestions | docs ✔️ |
Auto generated help Aliases: -? -h --help |
docs ✔️ |
Custom help generators | docs ✔️ |
Diagnostics | |
App Version _ -v or --version |
docs ✔️ |
[debug] directive step into debugger |
docs ✔️ |
[parse] directive | docs ✔️ |
show final values | ✔️ |
show inputs and source original source of value, including response file paths |
✔️ |
show defaults and source including key if from EnvVar or AppSetting |
✔️ |
Command logging show parse output and optionally system info and app config |
docs ✔️ |
Testing | docs |
BDD Framework Test an app as if run from the console |
✔️ |
Supports parallel test the whole framework avoids static state to support parallel test runs |
✔️ |
TestConsole | ✔️ |
TestDependencyResolver new TestDependencyResolver{ dbSvc, httpSvc } |
✔️ |
TempFiles helper create and cleanup files used for tests |
✔️ |
Capture State Capture state within a run to help test custom middleware components |
✔️ |
Dependency Injection | docs |
MicrosoftDependencyInjection | ✔️ |
Autofac | ✔️ |
SimpleInjector | ✔️ |
Test injector | docs ✔️ |
Custom | ✔️ |
Other | |
Ctrl+C | docs ✔️ |
Name casing consistent name casing via Humanizer |
docs ✔️ |
Extensibility | |
Custom middleware | docs ✔️ |
Custom directives | docs ✔️ |
Custom token transformations | docs ✔️ |
Custom parameter resolvers | docs ✔️ |