Skip to content
Remko Popma edited this page Sep 28, 2020 · 9 revisions

0.9.4 (May 2017)

  • Initial public release
  • @Command annotation for command name and usage help message customization
  • @Option and @Parameters annotations for named options and positional parameters
  • fine-grained control over arity: number of option parameters
  • built-in type converters
  • customizable type conversion
  • ANSI colors
  • Help API for fine-grained usage help message customization
  • CommandLine.run convenience method to parse and invoke Runnable commands on one line (superceded by execute in 4.0)

0.9.7 (Jun 2017)

  • subcommands and nested sub-subcommands
  • parser configuration to allow option overwriting
  • parser configuration to allow unmatched arguments

0.9.8 (Aug 2017)

  • API for registering subcommands declaratively with @Command(subcommands={...}) annotation
  • API for usageHelp and versionHelp attributes on @Option

1.0.0 (Aug 2017)

  • generate bash and zsh completion scripts
  • Map options like -Dkey1=val1 -Dkey2=val2
  • parser tracing for troubleshooting
  • added CommandLine.call convenience method for Callable commands (superceded by execute in 4.0)

2.0.0 (Oct 2017)

  • Groovy scripts can use picocli annotations
  • added CommandLine.parseWithHandler convenience method (superceded by execute in 4.0)
  • convenience methods run, call and parseWithHandler now work correctly for subcommands
  • convenience methods run, call and parseWithHandler now automatically print help and version information when requested
  • parser enhancement: positional arguments no longer need to follow options (any order is allowed)

2.1.0 (Nov 2017)

  • @-files (argument files)
  • multi-value boolean options (like -vvv)

2.2.0 (Dec 2017)

  • @ParentCommand annotation allows subcommands to reference the parent command
  • type converters for Java 7 (Path, etc) and Java 8 (java.time classes)
  • option-specific type converters
  • IVersionProvider
  • initial Dependency Injection support (IFactory)

2.3.0 (Feb 2018)

  • stopAtPositional and stopAtUnmatched parser configuration
  • options with optional parameter now have "" empty string fallback value (if option specified without parameter)

3.0.0 (May 2018)

  • programmatic API in addition to the annotations (CommandSpec, OptionSpec and PositionalParamSpec, ...)
  • mixins for reuse
  • standard help options --help and --version
  • built-in Help command
  • @Unmatched annotation
  • Stdout or Stderr (automatic help follows unix conventions)
  • exit code support

3.1.0 (Jun 2018)

  • command aliases

3.2.0 (Jul 2018)

  • full Dependency Injection support
  • @Option and @Parameters-annotated methods
  • JLine TAB completion
  • ${DEFAULT-VALUE} and ${COMPLETION-CANDIDATES} variables in descriptions
  • @Spec annotation for injecting the CommandSpec model into a command

3.3.0 (Jul 2018)

  • offer suggestions for unmatched options

3.4.0 (Aug 2018)

  • API for applications to output colors

3.5.0 (Aug 2018)

  • masked interactive options for password

3.6.0 (Sep 2018)

  • custom default providers
  • define subcommands in @Command-annotated methods
  • internationalization via resource bundles

3.7.0 (Oct 2018)

  • GraalVM support via new module picocli-codegen
  • JLine2 integration via picocli-shell-jline2 module
  • improved parsing of quoted values

3.8.0 (Nov 2018)

  • Mixin support in @Command methods

3.8.1 (Dec 2018)

  • JCommander-style argument files

3.9.0 (Jan 2019)

  • API for customizing the usage help message
  • JLine3 integration via picocli-shell-jline3 module
  • improved heuristics for enabling ANSI colors

4.0.0 (July 2019)

  • picocli-codegen annotation processor for effortless GraalVM native images
  • execute API:
    • exit codes
    • facilitates parser configuration
    • static run, call and parseWithHandlers bootstrap methods are now deprecated
  • mutually exclusive options
  • mutually dependent options
  • nested repeatable argument groups
  • variable interpolation (variable expansion) in annotation attributes
  • negatable options
  • custom parameter processing
  • customizable fallback value for options with optional parameter (when option specified without parameter)
  • auto-detect terminal width
  • improved support for Chinese, Japanese and Korean usage help
  • Spring Boot integration via picocli-spring-boot-starter module
  • picocli is now a JPMS module
  • separate picocli-groovy module

4.1.0 (Nov 2019)

  • built-in properties file-based default provider
  • built-in generate-completion subcommand for generating bash/zsh completion scripts
  • new API for creating custom usage help sections

4.1.2 (Dec 2019)

  • integration with JLine 3.13.2: auto-completion showing descriptions

4.2.0 (Feb 2020)

  • repeatable subcommands
  • generate man pages, HTML and PDF documentation
  • bash/zsh auto-completion for positional parameters
  • show an entry for @file argument files in the options list

4.3.0 (May 2020)

  • inherited options
  • case-insensitive options and commands
  • mixins can refer back to the command where they are used
  • automatic indexes for positional parameters
  • show an entry for -- in the options list

4.4.0 (Jul 2020)

  • abbreviated options and commands
  • built-in gen-manpage subcommand for generating documentation

4.5.0 (Aug 2020)

  • built-in ColorScheme styles for error text and stacktraces