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 {