diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 33bd30ae1..a8cc8f348 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -94,6 +94,7 @@ Picocli 4.7.0 introduced a `sortSynopsis = false` attribute to let the synopsis * [#1572] Enhancement: Remove redundant braces in ArgGroup synopsis. * [#1602] Enhancement: Fix incorrect debug output for add/removeAlias. * [#1575] Bugfix: Synopsis should not cluster boolean options if `posixClusteredShortOptionsAllowed` is set to false. +* [#1298] DOC: Publish all-in-one javadoc for all picocli modules. * [#812] DOC: Document how to test a picocli spring-boot application. * [#1596] DOC: fix javadoc typos and incorrect links. * [#1597] DOC: Add examples to Execution Configuration section in user manual. diff --git a/src/main/java/overview.html b/src/main/java/overview.html index d51632d82..dd08f8145 100644 --- a/src/main/java/overview.html +++ b/src/main/java/overview.html @@ -1,53 +1,35 @@
+- Picocli is a one-file framework for creating Java command line applications with almost zero code. - It supports a variety of command line syntax styles including POSIX, GNU, MS-DOS and more. - Generates highly customizable usage help messages with ANSI colors and styles. - Picocli-based applications can have command line TAB completion - showing available options, option parameters and subcommands, for any level of nested subcommands. + Picocli is a framework for creating Java command line applications with almost zero code.
- How it works: annotate your class and pass it to the CommandLine
constructor.
- Then invoke CommandLine.parseArgs
or CommandLine.execute
with
- the command line parameters, and picocli parses the command line arguments and converts them
- to strongly typed values, which are then injected in the annotated fields and methods of your class.
+ Most application will only need the main picocli
module, but
+ we recommend also configuring
+ the picocli-codegen
module as an annotation processor for your project.
+ This provides compile-time error checking and
+ generates GraalVM
+ configuration files under
+ META-INF/native-image/picocli-generated/$project
during compilation,
+ to be included in the application jar.
+ This in turn facilitates converting your command line application to a native image.
- Picocli provides an execute method
- that allows applications to omit error handling and other boilerplate code for common use cases.
- Here is a small example application that uses the CommandLine.execute
method
- to do parsing and error handling in one line of code.
+ The picocli-groovy
module allows
+ Groovy scripts to use picocli
+ annotations for even more compact code.
- The full user manual is hosted at https://picocli.info.
+ The picocli-shell-jline2
and picocli-shell-jline3
modules
+ are of interest to applications that want to provide an interactive shell-like console.
+
+ The picocli-spring-boot-starter
module provides Spring integration.
+ Particularly, it allows for @Autowired
or
+ @javax.inject
-annotated program elements in picocli components
+ (commands, subcommands, type converters, default providers, etc.)
+ to be injected with values from Spring's Application Context.
-@Command(name = "checksum", mixinStandardHelpOptions = true, version = "Checksum 4.0", - description = "Prints the checksum (SHA-1 by default) of a file to STDOUT.") -class CheckSum implements Callable<Integer> { - - @Parameters(index = "0", description = "The file whose checksum to calculate.") - private File file; - - @Option(names = {"-a", "--algorithm"}, description = "MD5, SHA-1, SHA-256, ...") - private String algorithm = "SHA-1"; - - @Override - public Integer call() throws Exception { // your business logic goes here - byte[] fileContents = Files.readAllBytes(file.toPath()); - byte[] digest = MessageDigest.getInstance(algorithm).digest(fileContents); - System.out.printf("%0" + (digest.length*2) + "x%n", new BigInteger(1, digest)); - return 0; - } - - // CheckSum implements Callable, so parsing, error handling and handling user - // requests for usage help or version help can be done with one line of code. - public static void main(String[] args) { - int exitCode = new CommandLine(new CheckSum()).execute(args); - System.exit(exitCode); - } -} -diff --git a/src/main/java9/module-info.java b/src/main/java9/module-info.java index 1fc1f120a..5b5dc29bd 100644 --- a/src/main/java9/module-info.java +++ b/src/main/java9/module-info.java @@ -25,8 +25,55 @@ // select the 'java9' folder and click 'Mark as: Excluded'. /** - * Defines API and implementation for creating command line (CLI) applications. + * Defines API and implementation for parsing command line arguments and creating command line (CLI) applications. + *
+ * The parser supports a variety of command line syntax styles including POSIX, GNU, MS-DOS and more. + * Generates highly customizable usage help messages with ANSI colors and styles. + * Picocli-based applications can have command line TAB completion + * showing available options, option parameters and subcommands, for any level of nested subcommands. + *
+ *
+ * How it works: annotate your class and pass it to the CommandLine
constructor.
+ * Then invoke CommandLine.parseArgs
or CommandLine.execute
with
+ * the command line parameters, and picocli parses the command line arguments and converts them
+ * to strongly typed values, which are then injected in the annotated fields and methods of your class.
+ *
+ * Picocli provides an execute method
+ * that allows applications to omit error handling and other boilerplate code for common use cases.
+ * Here is a small example application that uses the CommandLine.execute
method
+ * to do parsing and error handling in one line of code.
+ *
+ * The full user manual is hosted at https://picocli.info. + *
+ *+ * @Command(name = "checksum", mixinStandardHelpOptions = true, version = "Checksum 4.0", + * description = "Prints the checksum (SHA-1 by default) of a file to STDOUT.") + * class CheckSum implements Callable<Integer> { * + * @Parameters(index = "0", description = "The file whose checksum to calculate.") + * private File file; + * + * @Option(names = {"-a", "--algorithm"}, description = "MD5, SHA-1, SHA-256, ...") + * private String algorithm = "SHA-1"; + * + * @Override + * public Integer call() throws Exception { // your business logic goes here + * byte[] fileContents = Files.readAllBytes(file.toPath()); + * byte[] digest = MessageDigest.getInstance(algorithm).digest(fileContents); + * System.out.printf("%0" + (digest.length*2) + "x%n", new BigInteger(1, digest)); + * return 0; + * } + * + * // CheckSum implements Callable, so parsing, error handling and handling user + * // requests for usage help or version help can be done with one line of code. + * public static void main(String[] args) { + * int exitCode = new CommandLine(new CheckSum()).execute(args); + * System.exit(exitCode); + * } + * } + ** @since 4.0.0 */ module info.picocli {