diff --git a/README.md b/README.md index 730bbfc0e..d44ec3493 100644 --- a/README.md +++ b/README.md @@ -79,7 +79,7 @@ The user manual has examples of integrating with [Guice](https://picocli.info/#_ ### Releases * [All Releases](https://github.com/remkop/picocli/releases) -* Latest: 4.7.1 [Release Notes](https://github.com/remkop/picocli/releases/tag/v4.7.1) +* Latest: 4.7.2 [Release Notes](https://github.com/remkop/picocli/releases/tag/v4.7.2) * Older: Picocli 4.0 [Release Notes](https://github.com/remkop/picocli/releases/tag/v4.0.0) * Older: Picocli 3.0 [Release Notes](https://github.com/remkop/picocli/releases/tag/v3.0.0) * Older: Picocli 2.0 [Release Notes](https://github.com/remkop/picocli/releases/tag/v2.0.0) @@ -88,7 +88,7 @@ The user manual has examples of integrating with [Guice](https://picocli.info/#_ * [4.x User manual: https://picocli.info](https://picocli.info) * [4.x Quick Guide](https://picocli.info/quick-guide.html) * [4.x API Javadoc](https://picocli.info/apidocs/) -* [PREVIEW: Modular Javadoc for all artifacts (4.7.1-SNAPSHOT)](https://picocli.info/apidocs-all/) +* [PREVIEW: Modular Javadoc for all artifacts (4.7.2-SNAPSHOT)](https://picocli.info/apidocs-all/) * [Command line autocompletion](https://picocli.info/autocomplete.html) * [Programmatic API](https://picocli.info/picocli-programmatic-api.html) * [FAQ](https://github.com/remkop/picocli/wiki/FAQ) @@ -270,9 +270,9 @@ If you like picocli, help others discover picocli: #### Spread the joy! :tada: * Tweet about picocli! What do you like about it? How has it helped you? How is it different from the alternatives? * Mention that your project uses picocli in the documentation of your project. -* Show that your GitHub project uses picocli, with this badge in your README.md: [![picocli](https://img.shields.io/badge/picocli-4.7.1-green.svg)](https://github.com/remkop/picocli) +* Show that your GitHub project uses picocli, with this badge in your README.md: [![picocli](https://img.shields.io/badge/picocli-4.7.2-green.svg)](https://github.com/remkop/picocli) ``` -[![picocli](https://img.shields.io/badge/picocli-4.7.1-green.svg)](https://github.com/remkop/picocli) +[![picocli](https://img.shields.io/badge/picocli-4.7.2-green.svg)](https://github.com/remkop/picocli) ``` #### Preach it! :muscle: @@ -363,41 +363,41 @@ See the [source code](https://github.com/remkop/picocli/blob/main/src/main/java/ ### Gradle ``` -implementation 'info.picocli:picocli:4.7.1' +implementation 'info.picocli:picocli:4.7.2' ``` ### Maven ``` info.picocli picocli - 4.7.1 + 4.7.2 ``` ### Scala SBT ``` -libraryDependencies += "info.picocli" % "picocli" % "4.7.1" +libraryDependencies += "info.picocli" % "picocli" % "4.7.2" ``` ### Ivy ``` - + ``` ### Grape ```groovy @Grapes( - @Grab(group='info.picocli', module='picocli', version='4.7.1') + @Grab(group='info.picocli', module='picocli', version='4.7.2') ) ``` ### Leiningen ``` -[info.picocli/picocli "4.7.1"] +[info.picocli/picocli "4.7.2"] ``` ### Buildr ``` -'info.picocli:picocli:jar:4.7.1' +'info.picocli:picocli:jar:4.7.2' ``` ### JBang ``` -//DEPS info.picocli:picocli:4.7.1 +//DEPS info.picocli:picocli:4.7.2 ``` diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 643be1af7..1b66b229b 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,12 +1,10 @@ # picocli Release Notes -# Picocli 4.7.2 (UNRELEASED) +# Picocli 4.7.2 The picocli community is pleased to announce picocli 4.7.2. This release includes bugfixes and enhancements. - - This is the eighty-first public release. Picocli follows [semantic versioning](https://semver.org/). Artifacts in this release are signed by Remko Popma (6601 E5C0 8DCC BB96). @@ -19,6 +17,11 @@ Artifacts in this release are signed by Remko Popma (6601 E5C0 8DCC BB96). ## New and Noteworthy +* Bugfix: `fallbackValue=Option.NULL_VALUE` did not work for `Collection` or array options. +* Fixed `isJansiConsoleInstalled` performance issue. +* Kotlin enhancement: improved `paramLabel` string auto-generated from Kotlin `internal` methods which have mangled names with embedded "$". +* Various documentation fixes. + ## Fixed issues * [#1959] API: Add ability to enable loading resource bundles in annotation processor for tests. * [#1993] Bugfix: `fallbackValue=Option.NULL_VALUE` did not work for `Collection` or array options. Thanks to [Jiri Daněk](https://github.com/jiridanek) for raising this. @@ -29,8 +32,8 @@ Artifacts in this release are signed by Remko Popma (6601 E5C0 8DCC BB96). * [#1956] Doc: Fix broken link in user manual. Thanks to [Andreas Deininger](https://github.com/deining) for the pull request. * [#1955] DEP: Bump asciidoctorj from 2.5.5 to 2.5.7. Thanks to [Andreas Deininger](https://github.com/deining) for the pull request. * [#1980] DEP: Bump actions/checkout from 3.3.0 to 3.5.0 -* [#1985] DEP: Bump actions/setup-java from 3.10.0 to 3.11.0 * [#1952] DEP: Bump actions/setup-java from 3.9.0 to 3.10.0 +* [#1985] DEP: Bump actions/setup-java from 3.10.0 to 3.11.0 * [#1941] DEP: Bump emibcn/badge-action from 1.2.4 to 2.0.2 * [#1942] DEP: Bump github/codeql-action from 2.1.39 to 2.2.1 * [#1953] DEP: Bump github/codeql-action from 2.2.1 to 2.2.3 diff --git a/dependencies.gradle b/dependencies.gradle index c83cfb00f..47f87ae70 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -7,9 +7,9 @@ ext { // projectPreviousPublishedVersion is non-SNAPSHOT, only published releases projectPreviousPublishedVersion = "4\\.7\\.1" // for task bumpReadmeVersion // projectPreviousVersionRegex may be a SNAPSHOT - projectPreviousVersionRegex = "4\\.7\\.1" // for task bumpVersion - projectVersion = "4.7.2-SNAPSHOT" // for all build tasks - releaseDate = "2023-01-27" // for task bumpVersion + projectPreviousVersionRegex = "4\\.7\\.2-SNAPSHOT" // for task bumpVersion + projectVersion = "4.7.2" // for all build tasks + releaseDate = "2023-04-09" // for task bumpVersion releaseDatePreviousRegex = "2023\\-01\\-27" // for task bumpVersion // DEPENDENCIES diff --git a/docs/A-Whirlwind-Tour-of-Picocli.html b/docs/A-Whirlwind-Tour-of-Picocli.html index c38435d62..158dd4d71 100644 --- a/docs/A-Whirlwind-Tour-of-Picocli.html +++ b/docs/A-Whirlwind-Tour-of-Picocli.html @@ -4,7 +4,7 @@ - + A Whirlwind Tour of Picocli @@ -85,10 +85,10 @@ ul,ol,dl{line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit} ul,ol{margin-left:1.5em} ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0} -ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit} -ul.square{list-style-type:square} ul.circle{list-style-type:circle} ul.disc{list-style-type:disc} +ul.square{list-style-type:square} +ul.circle ul:not([class]),ul.disc ul:not([class]),ul.square ul:not([class]){list-style:inherit} ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0} dl dt{margin-bottom:.3125em;font-weight:bold} dl dd{margin-bottom:1.25em} @@ -1564,156 +1564,81 @@ }); }); - - - - - - + + + @@ -1721,7 +1646,7 @@

A Whirlwind Tour of Picocli

Remko Popma
-version 4.7.1 +version 4.7.2
@@ -3159,8 +3084,8 @@

Conclusion

diff --git a/docs/announcing-picocli-1.0.html b/docs/announcing-picocli-1.0.html index e46787ae8..e3ee6f46a 100644 --- a/docs/announcing-picocli-1.0.html +++ b/docs/announcing-picocli-1.0.html @@ -4,7 +4,7 @@ - + Announcing picocli 1.0 - a mighty tiny command line interface @@ -85,10 +85,10 @@ ul,ol,dl{line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit} ul,ol{margin-left:1.5em} ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0} -ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit} -ul.square{list-style-type:square} ul.circle{list-style-type:circle} ul.disc{list-style-type:disc} +ul.square{list-style-type:square} +ul.circle ul:not([class]),ul.disc ul:not([class]),ul.square ul:not([class]){list-style:inherit} ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0} dl dt{margin-bottom:.3125em;font-weight:bold} dl dd{margin-bottom:1.25em} @@ -526,156 +526,81 @@ .CodeRay .change .change{color:#66f} .CodeRay .head .head{color:#f4f} - - - - - - + + + @@ -683,7 +608,7 @@

Announcing picocli 1.0 - a mighty tiny command line interface

Remko Popma
-version 4.7.1, +version 4.7.2, 2017-09-10
@@ -807,8 +732,8 @@

Feedback Welcome

diff --git a/docs/apidocs-all/allclasses-frame.html b/docs/apidocs-all/allclasses-frame.html index e307d6ad8..551a021d8 100644 --- a/docs/apidocs-all/allclasses-frame.html +++ b/docs/apidocs-all/allclasses-frame.html @@ -3,7 +3,7 @@ -All Classes (picocli 4.7.1 API) +All Classes (picocli 4.7.2 API) diff --git a/docs/apidocs-all/allclasses-index.html b/docs/apidocs-all/allclasses-index.html index ffd371da8..469e6f581 100644 --- a/docs/apidocs-all/allclasses-index.html +++ b/docs/apidocs-all/allclasses-index.html @@ -3,7 +3,7 @@ -All Classes (picocli 4.7.1 API) +All Classes (picocli 4.7.2 API) @@ -21,7 +21,7 @@ diff --git a/docs/apidocs/allclasses-noframe.html b/docs/apidocs/allclasses-noframe.html index ceb611d83..8d2edfa79 100644 --- a/docs/apidocs/allclasses-noframe.html +++ b/docs/apidocs/allclasses-noframe.html @@ -3,7 +3,7 @@ -All Classes (picocli 4.7.1 API) +All Classes (picocli 4.7.2 API) diff --git a/docs/apidocs/constant-values.html b/docs/apidocs/constant-values.html index 71736217b..881dd1010 100644 --- a/docs/apidocs/constant-values.html +++ b/docs/apidocs/constant-values.html @@ -3,7 +3,7 @@ -Constant Field Values (picocli 4.7.1 API) +Constant Field Values (picocli 4.7.2 API) @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ diff --git a/docs/apidocs/picocli/package-summary.html b/docs/apidocs/picocli/package-summary.html index 3aeafe9c8..51f9d3d69 100644 --- a/docs/apidocs/picocli/package-summary.html +++ b/docs/apidocs/picocli/package-summary.html @@ -3,7 +3,7 @@ -picocli (picocli 4.7.1 API) +picocli (picocli 4.7.2 API) @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ - - - - - - + + + diff --git a/docs/groovy-2.5-clibuilder-renewal-part1.html b/docs/groovy-2.5-clibuilder-renewal-part1.html index adf74703e..bff652ce2 100644 --- a/docs/groovy-2.5-clibuilder-renewal-part1.html +++ b/docs/groovy-2.5-clibuilder-renewal-part1.html @@ -4,7 +4,7 @@ - + Groovy 2.5 CliBuilder Renewal (Part 1) - - - - - - + + + @@ -1126,8 +1051,8 @@

Wait, There’s More…​

diff --git a/docs/groovy-2.5-clibuilder-renewal-part2.html b/docs/groovy-2.5-clibuilder-renewal-part2.html index a9da55414..beaeaf4fd 100644 --- a/docs/groovy-2.5-clibuilder-renewal-part2.html +++ b/docs/groovy-2.5-clibuilder-renewal-part2.html @@ -4,7 +4,7 @@ - + Groovy 2.5 CliBuilder Renewal (Part 2) - - - - - - + + + @@ -1132,8 +1057,8 @@

Conclusion

diff --git a/docs/groovy-2.5-clibuilder-renewal.html b/docs/groovy-2.5-clibuilder-renewal.html index 8552b4f2d..a34d21cb6 100644 --- a/docs/groovy-2.5-clibuilder-renewal.html +++ b/docs/groovy-2.5-clibuilder-renewal.html @@ -4,7 +4,7 @@ - + Groovy 2.5 CliBuilder Renewal - - - - - - + + + @@ -1503,8 +1428,8 @@

Conclusion

diff --git a/docs/index.adoc b/docs/index.adoc index a34bf3ccf..c0351e190 100644 --- a/docs/index.adoc +++ b/docs/index.adoc @@ -1,8 +1,8 @@ = picocli - a mighty tiny command line interface //:author: Remko Popma //:email: rpopma@apache.org -:revnumber: 4.7.2-SNAPSHOT -:revdate: 2023-01-27 +:revnumber: 4.7.2 +:revdate: 2023-04-09 :toc: left :numbered: :toclevels: 2 @@ -120,7 +120,7 @@ class CheckSum implements Callable { [[CheckSum-App-Groovy]] [source,groovy,role="secondary"] ---- -@Grab('info.picocli:picocli-groovy:4.7.2-SNAPSHOT') +@Grab('info.picocli:picocli-groovy:4.7.2') import picocli.CommandLine import static picocli.CommandLine.* @@ -152,7 +152,7 @@ class Checksum implements Callable { [[CheckSum-App-Groovy-Script]] [source,groovy,role="secondary"] ---- -@Grab('info.picocli:picocli-groovy:4.7.2-SNAPSHOT') +@Grab('info.picocli:picocli-groovy:4.7.2') import static picocli.CommandLine.* import groovy.transform.Field import java.security.MessageDigest @@ -279,7 +279,7 @@ Below are examples of configuring Gradle or Maven to use picocli as an external [source,groovy,role="primary"] ---- dependencies { - implementation 'info.picocli:picocli:4.7.2-SNAPSHOT' + implementation 'info.picocli:picocli:4.7.2' } ---- .Maven @@ -288,7 +288,7 @@ dependencies { info.picocli picocli - 4.7.2-SNAPSHOT + 4.7.2 ---- @@ -325,8 +325,8 @@ https://immutables.github.io/apt.html[This page] shows the steps to configure Ec [source,groovy,role="primary"] ---- dependencies { - implementation 'info.picocli:picocli:4.7.2-SNAPSHOT' - annotationProcessor 'info.picocli:picocli-codegen:4.7.2-SNAPSHOT' + implementation 'info.picocli:picocli:4.7.2' + annotationProcessor 'info.picocli:picocli-codegen:4.7.2' } @@ -348,7 +348,7 @@ compileJava { info.picocli picocli-codegen - 4.7.2-SNAPSHOT + 4.7.2 @@ -368,7 +368,7 @@ then replace `annotationProcessor` with `kapt`: apply plugin: 'kotlin-kapt' // required dependencies { // ... - kapt 'info.picocli:picocli-codegen:4.7.2-SNAPSHOT' + kapt 'info.picocli:picocli-codegen:4.7.2' } ``` @@ -399,7 +399,7 @@ Now, assuming we created a jar named `checksum.jar` containing our compiled `Che [source,bash] ---- -java -cp "picocli-4.7.2-SNAPSHOT.jar:checksum.jar" CheckSum --algorithm SHA-1 hello.txt +java -cp "picocli-4.7.2.jar:checksum.jar" CheckSum --algorithm SHA-1 hello.txt ---- You may want to package your application in such a way that end users can invoke it with a short command like this: @@ -10381,7 +10381,7 @@ Eventually, we are ready to run our application: [source,bash] ---- -java -cp "picocli-4.7.2-SNAPSHOT.jar;myapp.jar" org.myorg.GreetingApp Sarah Lea +java -cp "picocli-4.7.2.jar;myapp.jar" org.myorg.GreetingApp Sarah Lea ---- With no command line parameter `--locale` given, the message texts are printed in the default language (here: English): @@ -10395,7 +10395,7 @@ In order to control the locale chosen for our output, we have to make use of the [source,bash] ---- -java -cp "picocli-4.7.2-SNAPSHOT.jar;myapp.jar" org.myorg.GreetingApp --locale=es Sarah Lea +java -cp "picocli-4.7.2.jar;myapp.jar" org.myorg.GreetingApp --locale=es Sarah Lea ---- Now our message texts are printed in Spanish: @@ -11714,21 +11714,21 @@ Since picocli dependencies are not available in the Spring Initializr, we have t info.picocli picocli-spring-boot-starter - 4.7.2-SNAPSHOT + 4.7.2 ---- .Gradle (Groovy) [source,groovy,role="secondary"] ---- dependencies { - implementation 'info.picocli:picocli-spring-boot-starter:4.7.2-SNAPSHOT' + implementation 'info.picocli:picocli-spring-boot-starter:4.7.2' } ---- .Gradle (Kotlin) [source,kotlin,role="secondary"] ---- dependencies { - implementation("info.picocli:picocli-spring-boot-starter:4.7.2-SNAPSHOT") + implementation("info.picocli:picocli-spring-boot-starter:4.7.2") } ---- @@ -13078,7 +13078,7 @@ As mentioned in <>, earlier in this manual, one way to [source,bash] ---- -java -cp "picocli-4.7.2-SNAPSHOT.jar;myapp.jar" org.myorg.MyMainClass --option=value arg0 arg1 +java -cp "picocli-4.7.2.jar;myapp.jar" org.myorg.MyMainClass --option=value arg0 arg1 ---- That is quite verbose. You may want to package your application in such a way that end users can invoke it by its command name like this: @@ -13097,7 +13097,7 @@ On unix-based operating systems, you can ask your users to define an alias. For [source,bash] ---- -alias mycommand='java -cp "/path/to/picocli-4.7.2-SNAPSHOT.jar:/path/to/myapp.jar" org.myorg.MainClass' +alias mycommand='java -cp "/path/to/picocli-4.7.2.jar:/path/to/myapp.jar" org.myorg.MainClass' ---- Append the above line to your `~/.bashrc` file to make this alias available in every new shell session. @@ -13146,7 +13146,7 @@ After installing GraalVM and installing the `native-image` generator utility (wi you can then create a native image by invoking the `native-image` command: ---- -path/to/native-image -cp picocli-4.7.2-SNAPSHOT.jar --static -jar myapp.jar +path/to/native-image -cp picocli-4.7.2.jar --static -jar myapp.jar ---- CAUTION: To create a native image, the compiler toolchain for your platform needs to be installed. See https://www.infoq.com/articles/java-native-cli-graalvm-picocli/[Build Great Native CLI Apps in Java with Graalvm and Picocli] for details. @@ -13291,7 +13291,7 @@ The script body is executed if the user input was valid and did not request usag [source,groovy] ---- -@Grab('info.picocli:picocli-groovy:4.7.2-SNAPSHOT') +@Grab('info.picocli:picocli-groovy:4.7.2') @GrabConfig(systemClassLoader=true) @Command(name = "myScript", mixinStandardHelpOptions = true, // add --help and --version options @@ -13332,7 +13332,7 @@ The table below compares these two base classes. WARNING: When upgrading scripts from picocli versions older than 4.0, just changing the version number is not enough! -Scripts should use `@Grab('info.picocli:picocli-groovy:4.7.2-SNAPSHOT')`. The old artifact id `@Grab('info.picocli:picocli:4.7.2-SNAPSHOT')` will not work, +Scripts should use `@Grab('info.picocli:picocli-groovy:4.7.2')`. The old artifact id `@Grab('info.picocli:picocli:4.7.2')` will not work, because the `@picocli.groovy.PicocliScript` annotation class and supporting classes have been moved into a separate module, `picocli-groovy`. ==== Closures in Annotations @@ -13390,7 +13390,7 @@ NOTE: When using a Groovy version older than 2.4.7, use this workaround for the [source,groovy] ---- -@Grab('info.picocli:picocli-groovy:4.7.2-SNAPSHOT') +@Grab('info.picocli:picocli-groovy:4.7.2') @GrabExclude('org.codehaus.groovy:groovy-all') // work around GROOVY-7613 ... ---- @@ -13533,13 +13533,13 @@ You can add picocli as an external dependency to your project, or you can includ .Gradle [source,groovy,role="primary"] ---- -implementation 'info.picocli:picocli:4.7.2-SNAPSHOT' +implementation 'info.picocli:picocli:4.7.2' ---- .Gradle (Kotlin) [source,kotlin,role="secondary"] ---- -implementation("info.picocli:picocli:4.7.2-SNAPSHOT") +implementation("info.picocli:picocli:4.7.2") ---- .Maven @@ -13548,50 +13548,50 @@ implementation("info.picocli:picocli:4.7.2-SNAPSHOT") info.picocli picocli - 4.7.2-SNAPSHOT + 4.7.2 ---- .Scala SBT [source,role="secondary"] ---- -libraryDependencies += "info.picocli" % "picocli" % "4.7.2-SNAPSHOT" +libraryDependencies += "info.picocli" % "picocli" % "4.7.2" ---- .Ivy [source,role="secondary"] ---- - + ---- .Grape [source,role="secondary"] ---- @Grapes( - @Grab(group='info.picocli', module='picocli', version='4.7.2-SNAPSHOT') + @Grab(group='info.picocli', module='picocli', version='4.7.2') ) ---- .Leiningen [source,role="secondary"] ---- -[info.picocli/picocli "4.7.2-SNAPSHOT"] +[info.picocli/picocli "4.7.2"] ---- .Buildr [source,role="secondary"] ---- -'info.picocli:picocli:jar:4.7.2-SNAPSHOT' +'info.picocli:picocli:jar:4.7.2' ---- .JBang [source,role="secondary"] ---- -//DEPS info.picocli:picocli:4.7.2-SNAPSHOT +//DEPS info.picocli:picocli:4.7.2 ---- === Source By using picocli in source form, you can avoid having an external dependency on picocli. -Picocli has only one source file: link:https://github.com/remkop/picocli/blob/v4.7.2-SNAPSHOT/src/main/java/picocli/CommandLine.java[CommandLine.java]. +Picocli has only one source file: link:https://github.com/remkop/picocli/blob/v4.7.2/src/main/java/picocli/CommandLine.java[CommandLine.java]. This facilitates including picocli in your project: simply copy and paste the code of this file into a file called `CommandLine.java`, add it to your project, and enjoy! diff --git a/docs/index.html b/docs/index.html index dcdbcebe1..c7d9e220b 100644 --- a/docs/index.html +++ b/docs/index.html @@ -4,7 +4,7 @@ - + picocli - a mighty tiny command line interface - - - - - + + + @@ -2562,8 +2488,8 @@
Usi
Gradle
dependencies {
-    implementation 'info.picocli:picocli:4.7.1'
-    annotationProcessor 'info.picocli:picocli-codegen:4.7.1'
+    implementation 'info.picocli:picocli:4.7.2'
+    annotationProcessor 'info.picocli:picocli-codegen:4.7.2'
 }
 
 
@@ -2585,7 +2511,7 @@ 
Usi <path> <groupId>info.picocli</groupId> <artifactId>picocli-codegen</artifactId> - <version>4.7.1</version> + <version>4.7.2</version> </path> </annotationProcessorPaths> <compilerArgs> @@ -2610,7 +2536,7 @@
apply plugin: 'kotlin-kapt' // required dependencies { // ... - kapt 'info.picocli:picocli-codegen:4.7.1' + kapt 'info.picocli:picocli-codegen:4.7.2' }
@@ -2653,7 +2579,7 @@

-
java -cp "picocli-4.7.1.jar:checksum.jar" CheckSum --algorithm SHA-1 hello.txt
+
java -cp "picocli-4.7.2.jar:checksum.jar" CheckSum --algorithm SHA-1 hello.txt
@@ -16688,7 +16614,7 @@

<dependency> <groupId>info.picocli</groupId> <artifactId>picocli-spring-boot-starter</artifactId> - <version>4.7.1</version> + <version>4.7.2</version> </dependency>

@@ -16696,7 +16622,7 @@

Gradle (Groovy)
dependencies {
-    implementation 'info.picocli:picocli-spring-boot-starter:4.7.1'
+    implementation 'info.picocli:picocli-spring-boot-starter:4.7.2'
 }
@@ -16704,7 +16630,7 @@

Gradle (Kotlin)
dependencies {
-    implementation("info.picocli:picocli-spring-boot-starter:4.7.1")
+    implementation("info.picocli:picocli-spring-boot-starter:4.7.2")
 }
@@ -18394,7 +18320,7 @@

-
java -cp "picocli-4.7.1.jar;myapp.jar" org.myorg.MyMainClass --option=value arg0 arg1
+
java -cp "picocli-4.7.2.jar;myapp.jar" org.myorg.MyMainClass --option=value arg0 arg1
-
alias mycommand='java -cp "/path/to/picocli-4.7.1.jar:/path/to/myapp.jar" org.myorg.MainClass'
+
alias mycommand='java -cp "/path/to/picocli-4.7.2.jar:/path/to/myapp.jar" org.myorg.MainClass'
@@ -18495,7 +18421,7 @@

-
path/to/native-image -cp picocli-4.7.1.jar --static -jar myapp.jar
+
path/to/native-image -cp picocli-4.7.2.jar --static -jar myapp.jar
-

GraalVM includes a Maven plugin -to generate a native image during the build. -Gradle users may be interested in the gradle-graal plugin by Palantir, or the graalvm-native-image plugin by Mike Neck. -(Documentation for both Maven and Gradle plugins seems sparse at time of this writing.)

+

GraalVM includes a Maven plugin and a Gradle plugin to generate a native image during the build. Gradle users may be interested in the gradle-graal plugin by Palantir also.

@@ -18529,6 +18452,9 @@

See also this demo Gradle project and this demo Maven project that provide a simple complete CLI app, with build instructions, that developers can clone, and build to get the stand-alone executable.

+
+

See also the korandoru/hawkeye for a real-world Maven project that provide a native image and a slim Docker image powered by native image.

+
@@ -18564,7 +18490,16 @@

-

29.4. Really Executable JAR

+

29.4. Spring Boot Maven Plugin

+
+

The Spring Boot Maven Plugin provides a repackage goal to create executable archives that contain all of an application’s dependencies. It thus functions as an executable, is portable across operating systems and architectures, and is still a valid JAR file that can be executed explicitly or otherwise used as a JAR.

+
+
+

korandoru/hawkeye provides a real-world example to package a picocli application into an executable file. You can read the pom.xml file of hawkeye-cli module for details. Note that the default embeddedLaunchScript.sh assumes that the application may be a Spring Application while the hawkeye-cli example uses a customized tidy script.

+
+ +
+

29.5. Really Executable JAR

A really executable JAR is a JAR file that is also a shell script which executes the JAR by running it with java. @@ -18578,19 +18513,19 @@

-

29.5. launch4j

+

29.6. launch4j

launch4j can create a native launcher executable. It can bundle a JRE (~200MB) or use a pre-installed one.

-

29.6. javapackager (Java 8)

+

29.7. javapackager (Java 8)

JDK 8 javapackager can create a native launcher executable. It can bundle a JRE (~200MB) or use a pre-installed one.

- +

With the JPMS module system introduced in Java 9 it became possible to use jlink to create a custom light-weight JRE with only the necessary modules. This JRE may be as small as 30-40MB. @@ -18605,7 +18540,7 @@

-

29.8. jpackage

+

29.9. jpackage

jpackage is a packaging tool according to JEP 343 which ships with JDK 14. JPackage can take the custom light-weight JRE produced by jlink and create an installer and a native application launcher. @@ -18619,7 +18554,7 @@

29.8. jpackage

-

29.9. jbang

+

29.10. jbang

jbang allows you to write scripts in Java that use external dependencies. You use it with a //DEPS comment, similar to the @Grab annotation in Groovy.

@@ -18630,7 +18565,7 @@

29.9. jbang

-

29.10. JReleaser

+

29.11. JReleaser

JReleaser enables several packaging options such as Homebrew, Chocolatey, Snapcraft, Scoop, jbang, Docker, among others. @@ -18707,7 +18642,7 @@

30.1.2. G

-
@Grab('info.picocli:picocli-groovy:4.7.1')
+
@Grab('info.picocli:picocli-groovy:4.7.2')
 @GrabConfig(systemClassLoader=true)
 @Command(name = "myScript",
         mixinStandardHelpOptions = true, // add --help and --version options
@@ -18793,7 +18728,7 @@ 

30.1.2. G

@@ -18900,7 +18835,7 @@

-
@Grab('info.picocli:picocli-groovy:4.7.1')
+
@Grab('info.picocli:picocli-groovy:4.7.2')
 @GrabExclude('org.codehaus.groovy:groovy-all') // work around GROOVY-7613
 ...
@@ -19091,13 +19026,13 @@

37.1. Build too
Gradle
-
implementation 'info.picocli:picocli:4.7.1'
+
implementation 'info.picocli:picocli:4.7.2'
Gradle (Kotlin)
-
implementation("info.picocli:picocli:4.7.1")
+
implementation("info.picocli:picocli:4.7.2")
@@ -19106,46 +19041,46 @@

37.1. Build too
<dependency>
   <groupId>info.picocli</groupId>
   <artifactId>picocli</artifactId>
-  <version>4.7.1</version>
+  <version>4.7.2</version>
 </dependency>

Scala SBT
-
libraryDependencies += "info.picocli" % "picocli" % "4.7.1"
+
libraryDependencies += "info.picocli" % "picocli" % "4.7.2"
Ivy
-
<dependency org="info.picocli" name="picocli" rev="4.7.1" />
+
<dependency org="info.picocli" name="picocli" rev="4.7.2" />
Grape
@Grapes(
-    @Grab(group='info.picocli', module='picocli', version='4.7.1')
+    @Grab(group='info.picocli', module='picocli', version='4.7.2')
 )
Leiningen
-
[info.picocli/picocli "4.7.1"]
+
[info.picocli/picocli "4.7.2"]
Buildr
-
'info.picocli:picocli:jar:4.7.1'
+
'info.picocli:picocli:jar:4.7.2'
JBang
-
//DEPS info.picocli:picocli:4.7.1
+
//DEPS info.picocli:picocli:4.7.2
@@ -19153,7 +19088,7 @@

37.1. Build too

37.2. Source

By using picocli in source form, you can avoid having an external dependency on picocli. -Picocli has only one source file: CommandLine.java. +Picocli has only one source file: CommandLine.java. This facilitates including picocli in your project: simply copy and paste the code of this file into a file called CommandLine.java, add it to your project, and enjoy!

@@ -19162,8 +19097,8 @@

37.2. Source

@@ -19201,4 +19136,4 @@

37.2. Source

handleTocOnResize(); - + \ No newline at end of file diff --git a/docs/man/gen-manpage.html b/docs/man/gen-manpage.html index f48d8bb73..a71cd0a8e 100644 --- a/docs/man/gen-manpage.html +++ b/docs/man/gen-manpage.html @@ -579,7 +579,7 @@

Example

-
java -Duser.language=de -cp "myapp.jar;picocli-4.7.1.jar;picocli-codegen-4.7.1.jar" picocli.codegen.docgen.manpage.ManPageGenerator my.pkg.MyClass
+
java -Duser.language=de -cp "myapp.jar;picocli-4.7.2.jar;picocli-codegen-4.7.2.jar" picocli.codegen.docgen.manpage.ManPageGenerator my.pkg.MyClass
@@ -587,8 +587,8 @@

Example

diff --git a/docs/man/gen-proxy-config.html b/docs/man/gen-proxy-config.html index 20c32f34f..3ef0fde75 100644 --- a/docs/man/gen-proxy-config.html +++ b/docs/man/gen-proxy-config.html @@ -540,7 +540,7 @@

Example

-
java -cp "myapp.jar;picocli-4.7.1.jar;picocli-codegen-4.7.1.jar" picocli.codegen.aot.graalvm.DynamicProxyConfigGenerator my.pkg.MyClass
+
java -cp "myapp.jar;picocli-4.7.2.jar;picocli-codegen-4.7.2.jar" picocli.codegen.aot.graalvm.DynamicProxyConfigGenerator my.pkg.MyClass
@@ -548,8 +548,8 @@

Example

diff --git a/docs/man/gen-reflect-config.html b/docs/man/gen-reflect-config.html index fb8ae75b7..425157c97 100644 --- a/docs/man/gen-reflect-config.html +++ b/docs/man/gen-reflect-config.html @@ -536,7 +536,7 @@

Example

-
java -cp "myapp.jar;picocli-4.7.1.jar;picocli-codegen-4.7.1.jar" picocli.codegen.aot.graalvm.ReflectionConfigGenerator my.pkg.MyClass
+
java -cp "myapp.jar;picocli-4.7.2.jar;picocli-codegen-4.7.2.jar" picocli.codegen.aot.graalvm.ReflectionConfigGenerator my.pkg.MyClass
@@ -544,8 +544,8 @@

Example

diff --git a/docs/man/gen-resource-config.html b/docs/man/gen-resource-config.html index ad3acb6b2..2fb19a17a 100644 --- a/docs/man/gen-resource-config.html +++ b/docs/man/gen-resource-config.html @@ -545,7 +545,7 @@

Example

-
java -cp "myapp.jar;picocli-4.7.1.jar;picocli-codegen-4.7.1.jar" picocli.codegen.aot.graalvm.ResourceConfigGenerator my.pkg.MyClass
+
java -cp "myapp.jar;picocli-4.7.2.jar;picocli-codegen-4.7.2.jar" picocli.codegen.aot.graalvm.ResourceConfigGenerator my.pkg.MyClass
@@ -553,8 +553,8 @@

Example

diff --git a/docs/man/generate-completion.html b/docs/man/generate-completion.html index 45d8b8d90..1adacdd5a 100644 --- a/docs/man/generate-completion.html +++ b/docs/man/generate-completion.html @@ -487,8 +487,8 @@

Options

diff --git a/docs/man/index.html b/docs/man/index.html index ff8bc783e..098a3f4e0 100644 --- a/docs/man/index.html +++ b/docs/man/index.html @@ -4,7 +4,7 @@ - + Picocli Built-In Tools - - - + + +
@@ -548,8 +548,8 @@

Picocli Built-In Tools

diff --git a/docs/man/picocli.AutoComplete.html b/docs/man/picocli.AutoComplete.html index 0edc79233..f90b7ee00 100644 --- a/docs/man/picocli.AutoComplete.html +++ b/docs/man/picocli.AutoComplete.html @@ -574,7 +574,7 @@

Example

-
java -cp "myapp.jar;picocli-4.7.1.jar" \
+
java -cp "myapp.jar;picocli-4.7.2.jar" \
             picocli.AutoComplete my.pkg.MyClass
@@ -583,8 +583,8 @@

Example

diff --git a/docs/migrating-from-commons-cli.html b/docs/migrating-from-commons-cli.html index ee5ee1d9b..9550e3571 100644 --- a/docs/migrating-from-commons-cli.html +++ b/docs/migrating-from-commons-cli.html @@ -4,7 +4,7 @@ - + Migrating from Commons CLI to picocli @@ -85,10 +85,10 @@ ul,ol,dl{line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit} ul,ol{margin-left:1.5em} ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0} -ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit} -ul.square{list-style-type:square} ul.circle{list-style-type:circle} ul.disc{list-style-type:disc} +ul.square{list-style-type:square} +ul.circle ul:not([class]),ul.disc ul:not([class]),ul.square ul:not([class]){list-style:inherit} ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0} dl dt{margin-bottom:.3125em;font-weight:bold} dl dd{margin-bottom:1.25em} @@ -526,81 +526,81 @@ .CodeRay .change .change{color:#66f} .CodeRay .head .head{color:#f4f} - - - + + + @@ -608,7 +608,7 @@

Migrating from Commons CLI to picocli

Remko Popma
-version 4.7.1, +version 4.7.2, 2018-11-19
@@ -1048,8 +1048,8 @@

Conclusion

diff --git a/docs/picocli-2.0-do-more-with-less.html b/docs/picocli-2.0-do-more-with-less.html index 11daff5cc..ce399a66b 100644 --- a/docs/picocli-2.0-do-more-with-less.html +++ b/docs/picocli-2.0-do-more-with-less.html @@ -4,7 +4,7 @@ - + Picocli 2.0: Do More With Less - - - + + +
@@ -995,8 +995,8 @@

Conclusion

diff --git a/docs/picocli-2.0-groovy-scripts-on-steroids.html b/docs/picocli-2.0-groovy-scripts-on-steroids.html index 538c235a6..42a57cc95 100644 --- a/docs/picocli-2.0-groovy-scripts-on-steroids.html +++ b/docs/picocli-2.0-groovy-scripts-on-steroids.html @@ -4,7 +4,7 @@ - + Picocli 2.0: Groovy Scripts on Steroids - - - + + +
@@ -885,8 +885,8 @@

Conclusion

diff --git a/docs/picocli-on-graalvm.html b/docs/picocli-on-graalvm.html index e7462fa2a..e0cbca642 100644 --- a/docs/picocli-on-graalvm.html +++ b/docs/picocli-on-graalvm.html @@ -4,7 +4,7 @@ - + Picocli on GraalVM: Blazingly Fast Command Line Apps - - - + + +
@@ -733,15 +733,15 @@

Conclusion

diff --git a/docs/picocli-programmatic-api.adoc b/docs/picocli-programmatic-api.adoc index 00baafa3a..f3a89af05 100644 --- a/docs/picocli-programmatic-api.adoc +++ b/docs/picocli-programmatic-api.adoc @@ -1,8 +1,8 @@ = Programmatic API //:author: Remko Popma //:email: rpopma@apache.org -:revnumber: 4.7.2-SNAPSHOT -:revdate: 2023-01-27 +:revnumber: 4.7.2 +:revdate: 2023-04-09 :toc: left :numbered: :toclevels: 2 diff --git a/docs/picocli-programmatic-api.html b/docs/picocli-programmatic-api.html index 6d71989be..70f9b0562 100644 --- a/docs/picocli-programmatic-api.html +++ b/docs/picocli-programmatic-api.html @@ -4,7 +4,7 @@ - + Programmatic API - - - + + +

When upgrading scripts from picocli versions older than 4.0, just changing the version number is not enough! -Scripts should use @Grab('info.picocli:picocli-groovy:4.7.1'). The old artifact id @Grab('info.picocli:picocli:4.7.1') will not work, +Scripts should use @Grab('info.picocli:picocli-groovy:4.7.2'). The old artifact id @Grab('info.picocli:picocli:4.7.2') will not work, because the @picocli.groovy.PicocliScript annotation class and supporting classes have been moved into a separate module, picocli-groovy.