- #181 Fixed bug where incorrect help message is displayed for short options with paramLabel when arity > 1
This is the eleventh public release. Picocli follows semantic versioning.
- #178 Fixed autocompletion bug for subcommands in zsh. Autocomplete on zsh would show only the global command options even when a subcommand was specified. Autocompletion now works for nested subcommands.
Summary: command line autocompletion, -Dkey=value
-like Map options, parser tracing, stricter parsing, bugfixes
This is the tenth public release. Picocli follows semantic versioning.
- #121 New feature: command line autocompletion. Picocli can generate bash and zsh completion scripts that allow the shell to generate potential completion matches based on the
@Option
and@Command
annotations in your application. After this script is installed, the shell will show the options and subcommands available in your java command line application, and in some cases show possible option values. - #67 New feature: Map options like
-Dkey1=val1 -Dkey2=val2
. Both key and value can be strongly typed (not just Strings). - #158 New feature: parser TRACING for easy troubleshooting. The trace level can be controlled with a system property.
- #170 New feature: added
call
convenience method similar torun
. Applications whose main business logic may throw an exception or returns a result can now implementCallable
and reduce some boilerplate code. - #149 Parser now throws UnmatchedArgumentException for args that resemble options but are not, instead of treating like them positional parameters. Thanks to giaco777.
- #172 Parser now throws MaxValuesforFieldExceededException when multi-valued option or parameters max arity exceeded
- #173 Parser now throws UnmatchedArgumentException when not all positional parameters are assigned to a field
- #171 WARN when option overwritten with different value (when isOverwrittenOptionsAllowed=true); WARN for unmatched args (when isUnmatchedArgumentsAllowed=true). Thanks to ddimtirov.
- #164 API change: Support format patterns in version string and printVersionHelp
- #167 API change: Change
type
attribute fromClass
toClass[]
. This was needed for Map options support. - #168 API change:
CommandLine::setSeparator
method now returns this CommandLine (was void), allowing for chained method calls. - #156 Added example to user manual to clarify main command common usage. Thanks to nagkumar.
- #166 Fixed bug where adjacent markup sections resulted in incorrect ANSI escape sequences
- #174 Fixed bug where under some circumstances, unmatched parameters were added to UnmatchedParameters list twice
- #162 Added new Version Help section to user manual; added
version
attribute on@Command
; addedCommandLine::printVersionHelp
convenience method to print version information from this annotation to the console - #145 Added
usageHelp
andversionHelp
attributes on@Option
; addedCommandLine::isUsageHelpRequested
andCommandLine::isVersionHelpRequested
to allow external components to detect whether usage help or version information was requested (without inspecting the annotated domain object). Thanks to kakawait. - #160 Added
@since
version in javadoc for recent API changes. - #157 API change: added
CommandLine::getParent
method to get the parent command of a subcommand. Thanks to nagkumar. - #152 Added support for registering subcommands declaratively with the
@Command(subcommands#{...})
annotation. Thanks to nagkumar. - #146 Show underlying error when type conversion fails
- #147 Toggle boolean flags instead of setting to
true
- #148 Long string in default value no longer causes infinite loop when printing usage. Thanks to smartboyathome.
- #142 First line of long synopsis no longer overshoots 80-character usage help width. Thanks to waacc-gh.
- #127 Added support for nested sub-subcommands
- #135 API change: renamed static convenience method
CommandLine::parse
topopulateCommand
- #134 API change:
CommandLine::parse
now returnsList<CommandLine>
(wasList<Object>
) - #133 API change:
CommandLine::getCommands
now returnsMap<String, CommandLine>
(wasMap<String, Object>
) - #133 API change: Added method
CommandLine::getCommand
- #136 API change: renamed method
CommandLine::addCommand
toaddSubcommand
; - #136 API change: renamed method
CommandLine::getCommands
togetSubcommands
- #131 API change: Renamed class
Arity
toRange
- #137 Improve validation: disallow index gap in @Parameters annotations
- #132 Improve validation: parsing should fail when unmatched arguments remain
- #138 Improve validation: disallow option overwriting by default
- #129 Make "allow option overwriting" configurable
- #140 Make "allow unmatched arguments" configurable
- #139 Improve validation: CommandLine must be constructed with a command that has at least one of @Command, @Option or @Parameters annotation
- #141 Bugfix: prevent NullPointerException when sorting required options/parameters
- #128 Fix unexpected MissingParameterException when a help-option is supplied (bug)
- #122 API change: remove field CommandLine.ansi (enhancement)
- #123 API change: make public Arity fields final (enhancement)
- #124 API change: make Help fields optionFields and positionalParameterFields final and unmodifiable (enhancement)
- #118 BumpVersion gradle task scrambles chars in manual (bug)
- #119 Add gradle task to publish to local folder (enhancement)
- #114 Replace ISO-8613-3 "true colors" with more widely supported 256-color palette (enhancement)
- #113 Fix javadoc warnings (doc enhancement)
- #117 The build should work for anyone checking out the project (bug)
- #112 Improve (shorten) user manual (doc enhancement)
- #105 Automate publishing to JCentral & Maven Central
- #90 Automate release
- #111 Improve picocli.Demo (enhancement)
- #110 Fix javadoc for
parse(String...)
return value (doc enhancement) - #108 Improve user manual (doc enhancement)
- #109
run
convenience method should accept PrintStream (enhancement)
- #106 MissingParameterException not thrown for missing mandatory @Parameters when options are specified
- #104 Investigate why colors don't show by default on Cygwin
- #103 Replace javadoc occurences of ASCII with ANSI. (doc bug)
- #102 Move ColorScheme inside Ansi class (enhancement question wontfix)
- #101 Cosmetics: indent
Default: <value>
by 2 spaces (enhancement) - #100 Improve error message for DuplicateOptionAnnotationsException (enhancement)
- #99 MissingRequiredParams error shows optional indexed Parameters (bug)
- #98 MissingRequiredParams error shows indexed Parameters in wrong order when not declared in index order (bug)
- #97 Fix compiler warnings (bug)
- #96 Synopsis shows indexed Parameters in wrong order when subclassing for reuse (bug)
- #95 EmptyStackException when no args are passed to object annotated with Parameters (bug)
- #94 heading fields are not inherited when subclassing for reuse (bug)
- #93 Only option fields are set accessible, not parameters fields (bug)
- #91 Syntax highlighting in manual source blocks (doc enhancement)
- #89 Improve error message for missing required options and parameters (enhancement)
- #88 Code cleanup (enhancement)
- #87 Add
CommandLine.usage
methods with a ColorScheme parameter (enhancement) - #86 Work around issue on Windows (Jansi?) where style OFF has no effect (bug)
- #85 Javadoc for Ansi classes (doc)
- #84 System property to let end users set color scheme (enhancement)
- #81 Improve README (doc enhancement)
- #80 Support customizable Ansi color scheme (enhancement)
- #79 Approximate
istty()
by checkingSystem.console() != null
(enhancement) - #78 Add method CommandLine.setUsageWidth(int) (enhancement wontfix)
- #77 Replace PicoCLI in javadoc with picocli (doc enhancement)
- #76 @Parameters javadoc is out of date (bug doc)
- #75 The default value for the
showDefaultValues
attribute should befalse
(bug) - #74 rename attribute
valueLabel
toparamLabel
(enhancement) - #73 Remove @Parameters synopsis attribute enhancement)
- #72 numeric parameter conversion should parse as decimal (bug enhancement)
- #71 Allow multiple values for an option -pA,B,C or -q="A B C" (enhancement)
- #66 Support ansi coloring (doc enhancement)
- #65 Consider removing the
required
Option attribute (enhancement question wontfix) - #64 Test that boolean options with arity=1 throw MissingParameterException when no value exists (not ParameterException) (bug QA)
- #35 Allow users to express arity as a range: 0..* or 1..3 (remove "varargs" attribute) (enhancement)
- #30 Test & update manual for exceptions thrown from custom type converters (doc QA)
- #26 Ergonomic API - convenience method to parse & run an app (duplicate enhancement)
- #12 Create comparison feature table with prior art (doc)
- #11 Write user manual (doc in-progress)
- #6 Array field values should be preserved (like Collections) and new values appended (enhancement)
- #4 Should @Option and @Parameters have listConverter attribute instead of elementType? (enhancement question wontfix)
- #69 Improve TextTable API (enhancement question)
- #63 Unify @Option and @Parameters annotations (enhancement wontfix)
- #59 Support declarative API for customizing usage help message (enhancement wontfix)
- #58 Add unit tests for ShortestFirst comparator (QA)
- #57 Consider using @Usage separator for parsing as well as for usage help (enhancement)
- #56 Add unit tests for customizable option parameter name and positional parameter name (QA)
- #55 Add unit tests for detailed Usage line (QA)
- #54 Add unit tests for DefaultLayout (QA)
- #53 Add unit tests for DefaultParameterRenderer (QA)
- #52 Add unit tests for DefaultOptionRenderer (QA)
- #51 Add unit tests for MinimalOptionRenderer (QA)
- #50 Add unit tests for Arity (QA)
- #49 Detailed usage header should cluster boolean options (enhancement)
- #48 Show positional parameters details in TextTable similar to option details (enhancement)
- #47 Reduce API surface for usage Help (enhancement)
- #44 Support detailed Usage line instead of generic Usage <main> [option] [parameters] (enhancement)
- #43 Generated help message should show parameter default value (except for boolean fields) (enhancement)
- #42 Show option parameter in generated help (use field name or field type?) (enhancement)
- #41 Required options should be visually distinct from optional options in usage help details (enhancement)
- #40 Test SortByShortestOptionName (QA)
- #39 Test that first declared option is selected by ShortestFirst comparator if both equally short (QA)
- #38 Test DefaultRenderer chooses shortest option name in left-most field (QA)
- #37 Consider returning a list of Points from TextTable::putValue (enhancement wontfix)
- #36 javadoc ILayout, IRenderer, DefaultLayout, DefaultRenderer (doc)
- #34 Usage should not show options if no options exist (enhancement)
- #32 Support customizable user help format. (enhancement)
- #31 Add test for recognizing clustered short option when parsing varargs array (bug QA)
- #27 Support git-like commands (enhancement)
- #8 Add positional @Parameter annotation (enhancement)
- #7 Implement online usage help (enhancement)
- #5 Rename
description
attribute tohelpText
orusage
(enhancement wontfix)
- #25 Use Integer.decode(String) rather than Integer.parseInt (enhancement)
- #23 @Option should not greedily consume args if varargs=false (bug)
- #20 add test where option name is "-p", give it input "-pa-p" (QA)
- #19 Improve error message for type conversion: include field name (and option name?) (enhancement)
- #18 test superclass bean and child class bean where child class field shadows super class and have different annotation Option name (QA)
- #17 Test superclass bean and child class bean where child class field shadows super class and have same annotation Option name (invalid QA)
- #16 Test arity > 1 for single-value fields (int, File, ...) (QA)
- #13 Test for enum type conversation (QA)
- #3 Interpreter should set helpRequested=false before parse() (bug)
- #2 Test that separators other than '=' can be configured (QA)
- #1 Test with other option prefixes than '-' (QA)