package picocli.examples.arggroup; import picocli.CommandLine; import picocli.CommandLine.ArgGroup; import picocli.CommandLine.Command; import picocli.CommandLine.Option; /** *

* The example below uses groups to define options sections in the usage help. * When a group has a non-null {@code heading} (or {@code headingKey}), * the options in the group are given the specified heading in the usage help message. *

* The {@code headingKey} attribute can be used to get the heading text from the command's resource bundle. *

* In this example, the groups are non-validating ({@code validate = false}), * so the grouping is for display purposes only. *

* This prints the following usage help message: *

*
{@code
 * Usage: sectiondemo [-a=] [-b=] [-c=] [-x=] [-y=] [-z=]
 * Section demo
 * This is the first section
 *   -a=    Option A
 *   -b=    Option B
 *   -c=    Option C
 * This is the second section
 *   -x=    Option X
 *   -y=    Option Y
 *   -z=    Option X
 * }
*/ @Command(name = "sectiondemo", description = "Section demo") public class OptionSectionDemo { @ArgGroup(validate = false, heading = "This is the first section%n") Section1 section1; static class Section1 { @Option(names = "-a", description = "Option A") int a; @Option(names = "-b", description = "Option B") int b; @Option(names = "-c", description = "Option C") int c; } @ArgGroup(validate = false, heading = "This is the second section%n") Section2 section2; static class Section2 { @Option(names = "-x", description = "Option X") int x; @Option(names = "-y", description = "Option Y") int y; @Option(names = "-z", description = "Option X") int z; } public static void main(String[] args) { new CommandLine(new OptionSectionDemo()).usage(System.out); } }