picocli

## Class CommandLine.Help

- java.lang.Object
- - picocli.CommandLine.Help

Enclosing class:
  CommandLine

    public static class CommandLine.Help
    extends java.lang.Object

A collection of methods and inner classes that provide fine-grained control over the contents and layout of the usage help message to display to end users when help is requested or invalid input values were specified.

## Class Diagram of the CommandLine.Help API

## Layered API

The `CommandLine.Command` annotation and the `CommandLine.Model.UsageMessageSpec` programmatic API equivalent provide the easiest way to configure the usage help message. See the Manual for details.

This Help class provides high-level functions to create sections of the usage help message and headings for these sections. Instead of calling the `CommandLine.usage(PrintStream, CommandLine.Help.ColorScheme)` method, application authors may want to create a custom usage help message by reorganizing sections in a different order and/or adding custom sections.

Finally, the Help class contains inner classes and interfaces that can be used to create custom help messages.

### IOptionRenderer and IParameterRenderer

Renders a field annotated with `CommandLine.Option` or `CommandLine.Parameters` to an array of `CommandLine.Help.Ansi.Text` values. By default, these values are

- mandatory marker character (if the option/parameter is `required`)
- short option name (empty for parameters)
- comma or empty (empty for parameters)
- long option names (the parameter `label` for parameters)
- description

Other components rely on this ordering.

### Layout

Delegates to the renderers to create `CommandLine.Help.Ansi.Text` values for the annotated fields, and uses a `CommandLine.Help.TextTable` to display these values in tabular format. Layout is responsible for deciding which values to display where in the table. By default, Layout shows one option or parameter per table row.

### TextTable

Responsible for spacing out `CommandLine.Help.Ansi.Text` values according to the `CommandLine.Help.Column` definitions the table was created with. Columns have a width, indentation, and an overflow policy that decides what to do if a value is longer than the column's width.

### Text

Encapsulates rich text with styles and colors in a way that other components like `CommandLine.Help.TextTable` are unaware of the embedded ANSI escape codes.

### Nested Class Summary

Nested Classes
`static class` `CommandLine.Help.Ansi` Provides methods and inner classes to support using ANSI escape codes in usage help messages.
`static class` `CommandLine.Help.ColorScheme` All usage help message are generated with a color scheme that assigns certain styles and colors to common parts of a usage message: the command name, options, positional parameters and option parameters.
`static class` `CommandLine.Help.Column` Columns define the width, indent (leading number of spaces in a column before the value) and Overflow policy of a column in a TextTable.
`static interface` `CommandLine.Help.IOptionRenderer` When customizing online help for `Option` details, a custom `IOptionRenderer` can be used to create textual representation of an Option in a tabular format: one or more rows, each containing one or more columns.
`static interface` `CommandLine.Help.IParameterRenderer` When customizing online help for positional parameters details, a custom `IParameterRenderer` can be used to create textual representation of a Parameters field in a tabular format: one or more rows, each containing one or more columns.
`static interface` `CommandLine.Help.IParamLabelRenderer` When customizing online usage help for an option parameter or a positional parameter, a custom `IParamLabelRenderer` can be used to render the parameter name or label to a String.
`static class` `CommandLine.Help.Layout` Use a Layout to format usage help text for options and parameters in tabular format.
`static class` `CommandLine.Help.TextTable` Responsible for spacing out `CommandLine.Help.Ansi.Text` values according to the `CommandLine.Help.Column` definitions the table was created with.
`static class` `CommandLine.Help.Visibility` Controls the visibility of certain aspects of the usage help message.

### Field Summary

Fields
`protected static java.lang.String` `DEFAULT_COMMAND_NAME` Constant String holding the default program name, value defined in `CommandLine.Model.CommandSpec.DEFAULT_COMMAND_NAME`.
`protected static java.lang.String` `DEFAULT_SEPARATOR` Constant String holding the default string that separates options from option parameters, value defined in `CommandLine.Model.ParserSpec.DEFAULT_SEPARATOR`.

### Constructor Summary

Constructors
Constructor and Description
`Help(CommandLine.Model.CommandSpec commandSpec, CommandLine.Help.ColorScheme colorScheme)` Constructs a new `Help` instance with the specified color scheme, initialized from annotatations on the specified class and superclasses.
`Help(java.lang.Object command)` Constructs a new `Help` instance with a default color scheme, initialized from annotatations on the specified class and superclasses.
`Help(java.lang.Object command, CommandLine.Help.Ansi ansi)` Constructs a new `Help` instance with a default color scheme, initialized from annotatations on the specified class and superclasses.
`Help(java.lang.Object command, CommandLine.Help.ColorScheme colorScheme)` Deprecated. use `picocli.CommandLine.Help#Help(picocli.CommandLine.Model.CommandSpec, picocli.CommandLine.Help.ColorScheme)`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
`java.lang.String` `abbreviatedSynopsis()` Generates a generic synopsis like `<command name> [OPTIONS] [PARAM1 [PARAM2]...]`, omitting parts that don't apply to the command (e.g., does not show [OPTIONS] if the command has no options).
`CommandLine.Help` `addAllSubcommands(java.util.Map<java.lang.String,CommandLine> commands)` Registers all specified subcommands with this Help.
`CommandLine.Help` `addSubcommand(java.lang.String commandName, java.lang.Object command)` Deprecated.
`protected java.util.List<java.lang.String>` `aliases()` Returns the list of aliases for the command in this Help.
`CommandLine.Help.Ansi` `ansi()` Returns whether ANSI escape codes are enabled or not.
`CommandLine.Help.ColorScheme` `colorScheme()` Returns the `ColorScheme` model that this Help was constructed with.
`java.lang.String` `commandList()` Returns a 2-column list with command names and the first line of their header or (if absent) description.
`java.lang.String` `commandListHeading(java.lang.Object... params)` Returns the text displayed before the command list; an empty string if there are no commands, otherwise the result of `String.format(commandListHeading, params)`.
`CommandLine.Help.Ansi.Text` `commandNamesText(java.lang.String separator)` Returns a `Text` object containing the command name and all aliases, separated with the specified separator.
`CommandLine.Model.CommandSpec` `commandSpec()` Returns the `CommandSpec` model that this Help was constructed with.
`CommandLine.Help.Layout` `createDefaultLayout()` Returns a `Layout` instance configured with the user preferences captured in this Help instance.
`CommandLine.Help.IOptionRenderer` `createDefaultOptionRenderer()` Returns a new default OptionRenderer which converts `Options` to five columns of text to match the default TextTable column layout.
`CommandLine.Help.IParameterRenderer` `createDefaultParameterRenderer()` Returns a new default ParameterRenderer which converts positional parameters to four columns of text to match the default TextTable column layout.

`CommandLine.Help.IParamLabelRenderer`

`createDefaultParamLabelRenderer()`
Returns a new default param label renderer that separates option parameters from their option name with the specified separator string, and, unless `CommandLine.Model.ArgSpec.hideParamSyntax()` is true, surrounds optional parameters with `'['` and `']'` characters and uses ellipses ("...") to indicate that any number of a parameter are allowed.

`protected CommandLine.Help.Ansi.Text` `createDetailedSynopsisCommandText()` Returns a Text object containing a partial detailed synopsis showing only the subcommands, starting with a `" "` space.
`protected CommandLine.Help.Ansi.Text` `createDetailedSynopsisOptionsText(java.util.Comparator<CommandLine.Model.OptionSpec> optionSort, boolean clusterBooleanOptions)` Returns a Text object containing a partial detailed synopsis showing only the options, starting with a `" "` space.
`protected CommandLine.Help.Ansi.Text` `createDetailedSynopsisPositionalsText()` Returns a Text object containing a partial detailed synopsis showing only the positional parameters, starting with a `" "` space.
`static CommandLine.Help.IOptionRenderer` `createMinimalOptionRenderer()` Returns a new minimal OptionRenderer which converts `Options` to a single row with two columns of text: an option name and a description.
`static CommandLine.Help.IParameterRenderer` `createMinimalParameterRenderer()` Returns a new minimal ParameterRenderer which converts positional parameters to a single row with two columns of text: an option name and a description.
`static CommandLine.Help.IParamLabelRenderer` `createMinimalParamLabelRenderer()` Returns a value renderer that returns the `paramLabel` if defined or the field name otherwise.
`static java.util.Comparator<CommandLine.Model.OptionSpec>` `createShortOptionArityAndNameComparator()` Sorts `OptionSpecs` by their option max arity first, by min arity next, and by option name last.
`static java.util.Comparator<CommandLine.Model.OptionSpec>` `createShortOptionNameComparator()` Sorts `OptionSpecs` by their option name in case-insensitive alphabetic order.
`java.lang.String` `customSynopsis(java.lang.Object... params)` Returns command custom synopsis as a string.
`static CommandLine.Help.ColorScheme` `defaultColorScheme(CommandLine.Help.Ansi ansi)` Creates and returns a new `CommandLine.Help.ColorScheme` initialized with picocli default values: commands are bold, options and parameters use a yellow foreground, and option parameters use italic.
`java.lang.String` `description(java.lang.Object... params)` Returns command description text as a string.
`java.lang.String` `descriptionHeading(java.lang.Object... params)` Returns the text displayed before the description text; an empty string if there is no description, otherwise the result of `String.format(descriptionHeading, params)`.
`java.lang.String` `detailedSynopsis(java.util.Comparator<CommandLine.Model.OptionSpec> optionSort, boolean clusterBooleanOptions)` Deprecated. use `detailedSynopsis(int, Comparator, boolean)` instead.
`java.lang.String` `detailedSynopsis(int synopsisHeadingLength, java.util.Comparator<CommandLine.Model.OptionSpec> optionSort, boolean clusterBooleanOptions)` Generates a detailed synopsis message showing all options and parameters.
`java.lang.String` `footer(java.lang.Object... params)` Returns command footer text as a string.
`java.lang.String` `footerHeading(java.lang.Object... params)` Returns the text displayed before the footer text; the result of `String.format(footerHeading, params)`.
`java.lang.String` `header(java.lang.Object... params)` Returns the command header text as a string.
`java.lang.String` `headerHeading(java.lang.Object... params)` Returns the text displayed before the header text; the result of `String.format(headerHeading, params)`.
`protected java.lang.String` `insertSynopsisCommandName(int synopsisHeadingLength, CommandLine.Help.Ansi.Text optionsAndPositionalsAndCommandsDetails)` Returns the detailed synopsis text by inserting the command name before the specified text with options and positional parameters details.
`static java.lang.StringBuilder` `join(CommandLine.Help.Ansi ansi, int usageHelpWidth, java.lang.String[] values, java.lang.StringBuilder sb, java.lang.Object... params)` Formats each of the specified values and appends it to the specified StringBuilder.
`java.lang.String` `optionList()` Returns a description of the options supported by the application.
`java.lang.String` `optionList(CommandLine.Help.Layout layout, java.util.Comparator<CommandLine.Model.OptionSpec> optionSort, CommandLine.Help.IParamLabelRenderer valueLabelRenderer)` Sorts all `Options` with the specified `comparator` (if the comparator is non-`null`), then adds all non-hidden options to the specified TextTable and returns the result of TextTable.toString().
`java.lang.String` `optionListHeading(java.lang.Object... params)` Returns the text displayed before the option list; an empty string if there are no options, otherwise the result of `String.format(optionListHeading, params)`.
`CommandLine.Help.IParamLabelRenderer` `parameterLabelRenderer()` Option and positional parameter value label renderer used for the synopsis line(s) and the option list.
`java.lang.String` `parameterList()` Returns the section of the usage help message that lists the parameters with their descriptions.
`java.lang.String` `parameterList(CommandLine.Help.Layout layout, CommandLine.Help.IParamLabelRenderer paramLabelRenderer)` Returns the section of the usage help message that lists the parameters with their descriptions.
`java.lang.String` `parameterListHeading(java.lang.Object... params)` Returns the text displayed before the positional parameter list; an empty string if there are no positional parameters, otherwise the result of `String.format(parameterListHeading, params)`.
`static java.util.Comparator<java.lang.String>` `shortestFirst()` Sorts short strings before longer strings.
`protected java.util.Map<java.lang.String,CommandLine.Help>` `subcommands()` Returns the map of subcommand `Help` instances for this command Help.
`java.lang.String` `synopsis()` Deprecated. use `synopsis(int)` instead
`java.lang.String` `synopsis(int synopsisHeadingLength)` Returns a synopsis for the command, reserving the specified space for the synopsis heading.
`java.lang.String` `synopsisHeading(java.lang.Object... params)` Returns the text displayed before the synopsis text; the result of `String.format(synopsisHeading, params)`.
`int` `synopsisHeadingLength()` Returns the number of characters the synopsis heading will take on the same line as the synopsis.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### DEFAULT_COMMAND_NAME

    protected static final java.lang.String DEFAULT_COMMAND_NAME

Constant String holding the default program name, value defined in `CommandLine.Model.CommandSpec.DEFAULT_COMMAND_NAME`.

See Also:
  Constant Field Values

#### DEFAULT_SEPARATOR

    protected static final java.lang.String DEFAULT_SEPARATOR

Constant String holding the default string that separates options from option parameters, value defined in `CommandLine.Model.ParserSpec.DEFAULT_SEPARATOR`.

See Also:
  Constant Field Values

### Constructor Detail

#### Help

    public Help(java.lang.Object command)

Constructs a new `Help` instance with a default color scheme, initialized from annotatations on the specified class and superclasses.

Parameters:
  `command` - the annotated object to create usage help for

#### Help

    public Help(java.lang.Object command,
                CommandLine.Help.Ansi ansi)

Constructs a new `Help` instance with a default color scheme, initialized from annotatations on the specified class and superclasses.

Parameters:
  `command` - the annotated object to create usage help for
  `ansi` - whether to emit ANSI escape codes or not

#### Help

    @Deprecated
    public Help(java.lang.Object command,
                             CommandLine.Help.ColorScheme colorScheme)

Deprecated. use `picocli.CommandLine.Help#Help(picocli.CommandLine.Model.CommandSpec, picocli.CommandLine.Help.ColorScheme)`
Constructs a new `Help` instance with the specified color scheme, initialized from annotatations on the specified class and superclasses.

Parameters:
  `command` - the annotated object to create usage help for
  `colorScheme` - the color scheme to use

#### Help

    public Help(CommandLine.Model.CommandSpec commandSpec,
                CommandLine.Help.ColorScheme colorScheme)

Constructs a new `Help` instance with the specified color scheme, initialized from annotatations on the specified class and superclasses.

Parameters:
  `commandSpec` - the command model to create usage help for
  `colorScheme` - the color scheme to use

### Method Detail

#### commandSpec

    public CommandLine.Model.CommandSpec commandSpec()

Returns the `CommandSpec` model that this Help was constructed with.

Since:
  3.9

#### colorScheme

    public CommandLine.Help.ColorScheme colorScheme()

Returns the `ColorScheme` model that this Help was constructed with.

Since:
  3.0

#### subcommands

    protected java.util.Map<java.lang.String,CommandLine.Help> subcommands()

Returns the map of subcommand `Help` instances for this command Help.

Since:
  3.9

#### aliases

    protected java.util.List<java.lang.String> aliases()

Returns the list of aliases for the command in this Help.

Since:
  3.9

#### parameterLabelRenderer

    public CommandLine.Help.IParamLabelRenderer parameterLabelRenderer()

Option and positional parameter value label renderer used for the synopsis line(s) and the option list. By default initialized to the result of `createDefaultParamLabelRenderer()`, which takes a snapshot of the `CommandLine.Model.ParserSpec.separator()` at construction time. If the separator is modified after Help construction, you may need to re-initialize this field by calling `createDefaultParamLabelRenderer()` again.

#### addAllSubcommands

    public CommandLine.Help addAllSubcommands(java.util.Map<java.lang.String,CommandLine> commands)

Registers all specified subcommands with this Help.

Parameters:
  `commands` - maps the command names to the associated CommandLine object
Returns:
  this Help instance (for method chaining)
See Also:
  `CommandLine.getSubcommands()`

#### addSubcommand

    @Deprecated
    public CommandLine.Help addSubcommand(java.lang.String commandName,
                                                       java.lang.Object command)

Deprecated.
Registers the specified subcommand with this Help.

Parameters:
  `commandName` - the name of the subcommand to display in the usage message
  `command` - the `CommandSpec` or `@Command` annotated object to get more information from
Returns:
  this Help instance (for method chaining)

#### synopsis

    @Deprecated
    public java.lang.String synopsis()

Deprecated. use `synopsis(int)` instead
Returns a synopsis for the command without reserving space for the synopsis heading.

Returns:
  a synopsis
See Also:
  `abbreviatedSynopsis()`, `detailedSynopsis(Comparator, boolean)`

#### synopsis

    public java.lang.String synopsis(int synopsisHeadingLength)

Returns a synopsis for the command, reserving the specified space for the synopsis heading.

Parameters:
  `synopsisHeadingLength` - the length of the synopsis heading that will be displayed on the same line
Returns:
  a synopsis
See Also:
  `abbreviatedSynopsis()`, `detailedSynopsis(Comparator, boolean)`, `synopsisHeading(java.lang.Object...)`

#### abbreviatedSynopsis

    public java.lang.String abbreviatedSynopsis()

Generates a generic synopsis like `<command name> [OPTIONS] [PARAM1 [PARAM2]...]`, omitting parts that don't apply to the command (e.g., does not show [OPTIONS] if the command has no options).

Returns:
  a generic synopsis

#### detailedSynopsis

    @Deprecated
    public java.lang.String detailedSynopsis(java.util.Comparator<CommandLine.Model.OptionSpec> optionSort,
                                                          boolean clusterBooleanOptions)

Deprecated. use `detailedSynopsis(int, Comparator, boolean)` instead.
Generates a detailed synopsis message showing all options and parameters. Follows the unix convention of showing optional options and parameters in square brackets (`[ ]`).

Parameters:
  `optionSort` - comparator to sort options or `null` if options should not be sorted
  `clusterBooleanOptions` - `true` if boolean short options should be clustered into a single string
Returns:
  a detailed synopsis

#### detailedSynopsis

    public java.lang.String detailedSynopsis(int synopsisHeadingLength,
                                             java.util.Comparator<CommandLine.Model.OptionSpec> optionSort,
                                             boolean clusterBooleanOptions)

Generates a detailed synopsis message showing all options and parameters. Follows the unix convention of showing optional options and parameters in square brackets (`[ ]`).

Parameters:
  `synopsisHeadingLength` - the length of the synopsis heading that will be displayed on the same line
  `optionSort` - comparator to sort options or `null` if options should not be sorted
  `clusterBooleanOptions` - `true` if boolean short options should be clustered into a single string
Returns:
  a detailed synopsis
Since:
  3.0

#### createDetailedSynopsisOptionsText

    protected CommandLine.Help.Ansi.Text createDetailedSynopsisOptionsText(java.util.Comparator<CommandLine.Model.OptionSpec> optionSort,
                                                                           boolean clusterBooleanOptions)

Returns a Text object containing a partial detailed synopsis showing only the options, starting with a `" "` space. Follows the unix convention of showing optional options and parameters in square brackets (`[ ]`).

Parameters:
  `optionSort` - comparator to sort options or `null` if options should not be sorted
  `clusterBooleanOptions` - `true` if boolean short options should be clustered into a single string
Returns:
  the formatted options, starting with a `" "` space, or an empty Text if this command has no named options
Since:
  3.9

#### createDetailedSynopsisPositionalsText

    protected CommandLine.Help.Ansi.Text createDetailedSynopsisPositionalsText()

Returns a Text object containing a partial detailed synopsis showing only the positional parameters, starting with a `" "` space. Follows the unix convention of showing optional options and parameters in square brackets (`[ ]`).

Returns:
  the formatted positional parameters, starting with a `" "` space, or an empty Text if this command has no positional parameters
Since:
  3.9

#### createDetailedSynopsisCommandText

    protected CommandLine.Help.Ansi.Text createDetailedSynopsisCommandText()

Returns a Text object containing a partial detailed synopsis showing only the subcommands, starting with a `" "` space. Follows the unix convention of showing optional elements in square brackets (`[ ]`).

Returns:
  this implementation returns a hard-coded string `" [COMMAND]"` if this command has subcommands, an empty Text otherwise
Since:
  3.9

#### insertSynopsisCommandName

    protected java.lang.String insertSynopsisCommandName(int synopsisHeadingLength,
                                                         CommandLine.Help.Ansi.Text optionsAndPositionalsAndCommandsDetails)

Returns the detailed synopsis text by inserting the command name before the specified text with options and positional parameters details.

Parameters:
  `synopsisHeadingLength` - length of the synopsis heading string to be displayed on the same line as the first synopsis line. For example, if the synopsis heading is `"Usage: "`, this value is 7.
  `optionsAndPositionalsAndCommandsDetails` - formatted string with options, positional parameters and subcommands. Follows the unix convention of showing optional options and parameters in square brackets (`[ ]`).
Returns:
  the detailed synopsis text, in multiple lines if the length exceeds the usage width

#### synopsisHeadingLength

    public int synopsisHeadingLength()

Returns the number of characters the synopsis heading will take on the same line as the synopsis.

Returns:
  the number of characters the synopsis heading will take on the same line as the synopsis.
See Also:
  `detailedSynopsis(int, Comparator, boolean)`

#### optionList

    public java.lang.String optionList()

Returns a description of the options supported by the application. This implementation sorts options alphabetically, and shows only the non-hidden options in a tabular format using the default renderer and default layout.

Returns:
  the fully formatted option list
See Also:
  `optionList(Layout, Comparator, IParamLabelRenderer)`

#### optionList

    public java.lang.String optionList(CommandLine.Help.Layout layout,
                                       java.util.Comparator<CommandLine.Model.OptionSpec> optionSort,
                                       CommandLine.Help.IParamLabelRenderer valueLabelRenderer)

Sorts all `Options` with the specified `comparator` (if the comparator is non-`null`), then adds all non-hidden options to the specified TextTable and returns the result of TextTable.toString().

Parameters:
  `layout` - responsible for rendering the option list
  `optionSort` - determines in what order `Options` should be listed. Declared order if `null`
  `valueLabelRenderer` - used for options with a parameter
Returns:
  the fully formatted option list
Since:
  3.0

#### parameterList

    public java.lang.String parameterList()

Returns the section of the usage help message that lists the parameters with their descriptions.

Returns:
  the section of the usage help message that lists the parameters

#### parameterList

    public java.lang.String parameterList(CommandLine.Help.Layout layout,
                                          CommandLine.Help.IParamLabelRenderer paramLabelRenderer)

Returns the section of the usage help message that lists the parameters with their descriptions.

Parameters:
  `layout` - the layout to use
  `paramLabelRenderer` - for rendering parameter names
Returns:
  the section of the usage help message that lists the parameters

#### join

    public static java.lang.StringBuilder join(CommandLine.Help.Ansi ansi,
                                               int usageHelpWidth,
                                               java.lang.String[] values,
                                               java.lang.StringBuilder sb,
                                               java.lang.Object... params)

Formats each of the specified values and appends it to the specified StringBuilder.

Parameters:
  `ansi` - whether the result should contain ANSI escape codes or not
  `usageHelpWidth` - the width of the usage help message
  `values` - the values to format and append to the StringBuilder
  `sb` - the StringBuilder to collect the formatted strings
  `params` - the parameters to pass to the format method when formatting each value
Returns:
  the specified StringBuilder

#### customSynopsis

    public java.lang.String customSynopsis(java.lang.Object... params)

Returns command custom synopsis as a string. A custom synopsis can be zero or more lines, and can be specified declaratively with the `CommandLine.Command.customSynopsis()` annotation attribute or programmatically by setting the Help instance's `customSynopsis(java.lang.Object...)` field.

Parameters:
  `params` - Arguments referenced by the format specifiers in the synopsis strings
Returns:
  the custom synopsis lines combined into a single String (which may be empty)

#### description

    public java.lang.String description(java.lang.Object... params)

Returns command description text as a string. Description text can be zero or more lines, and can be specified declaratively with the `CommandLine.Command.description()` annotation attribute or programmatically by setting the Help instance's `description(java.lang.Object...)` field.

Parameters:
  `params` - Arguments referenced by the format specifiers in the description strings
Returns:
  the description lines combined into a single String (which may be empty)

#### header

    public java.lang.String header(java.lang.Object... params)

Returns the command header text as a string. Header text can be zero or more lines, and can be specified declaratively with the `CommandLine.Command.header()` annotation attribute or programmatically by setting the Help instance's `header(java.lang.Object...)` field.

Parameters:
  `params` - Arguments referenced by the format specifiers in the header strings
Returns:
  the header lines combined into a single String (which may be empty)

#### footer

    public java.lang.String footer(java.lang.Object... params)

Returns command footer text as a string. Footer text can be zero or more lines, and can be specified declaratively with the `CommandLine.Command.footer()` annotation attribute or programmatically by setting the Help instance's `footer(java.lang.Object...)` field.

Parameters:
  `params` - Arguments referenced by the format specifiers in the footer strings
Returns:
  the footer lines combined into a single String (which may be empty)

#### headerHeading

    public java.lang.String headerHeading(java.lang.Object... params)

Returns the text displayed before the header text; the result of `String.format(headerHeading, params)`.

Parameters:
  `params` - the parameters to use to format the header heading
Returns:
  the formatted header heading

#### synopsisHeading

    public java.lang.String synopsisHeading(java.lang.Object... params)

Returns the text displayed before the synopsis text; the result of `String.format(synopsisHeading, params)`.

Parameters:
  `params` - the parameters to use to format the synopsis heading
Returns:
  the formatted synopsis heading

#### descriptionHeading

    public java.lang.String descriptionHeading(java.lang.Object... params)

Returns the text displayed before the description text; an empty string if there is no description, otherwise the result of `String.format(descriptionHeading, params)`.

Parameters:
  `params` - the parameters to use to format the description heading
Returns:
  the formatted description heading

#### parameterListHeading

    public java.lang.String parameterListHeading(java.lang.Object... params)

Returns the text displayed before the positional parameter list; an empty string if there are no positional parameters, otherwise the result of `String.format(parameterListHeading, params)`.

Parameters:
  `params` - the parameters to use to format the parameter list heading
Returns:
  the formatted parameter list heading

#### optionListHeading

    public java.lang.String optionListHeading(java.lang.Object... params)

Returns the text displayed before the option list; an empty string if there are no options, otherwise the result of `String.format(optionListHeading, params)`.

Parameters:
  `params` - the parameters to use to format the option list heading
Returns:
  the formatted option list heading

#### commandListHeading

    public java.lang.String commandListHeading(java.lang.Object... params)

Returns the text displayed before the command list; an empty string if there are no commands, otherwise the result of `String.format(commandListHeading, params)`.

Parameters:
  `params` - the parameters to use to format the command list heading
Returns:
  the formatted command list heading

#### footerHeading

    public java.lang.String footerHeading(java.lang.Object... params)

Returns the text displayed before the footer text; the result of `String.format(footerHeading, params)`.

Parameters:
  `params` - the parameters to use to format the footer heading
Returns:
  the formatted footer heading

#### commandList

    public java.lang.String commandList()

Returns a 2-column list with command names and the first line of their header or (if absent) description.

Returns:
  a usage help section describing the added commands

#### commandNamesText

    public CommandLine.Help.Ansi.Text commandNamesText(java.lang.String separator)

Returns a `Text` object containing the command name and all aliases, separated with the specified separator. Command names will use the `command style` for the color scheme of this Help.

Since:
  3.9

#### createDefaultLayout

    public CommandLine.Help.Layout createDefaultLayout()

Returns a `Layout` instance configured with the user preferences captured in this Help instance.

Returns:
  a Layout

#### createDefaultOptionRenderer

    public CommandLine.Help.IOptionRenderer createDefaultOptionRenderer()

Returns a new default OptionRenderer which converts `Options` to five columns of text to match the default TextTable column layout. The first row of values looks like this:

1. the required option marker
2. 2-character short option name (or empty string if no short option exists)
3. comma separator (only if both short option and long option exist, empty string otherwise)
4. comma-separated string with long option name(s)
5. first element of the `CommandLine.Model.OptionSpec.description()` array

Following this, there will be one row for each of the remaining elements of the `CommandLine.Model.OptionSpec.description()` array, and these rows look like `{"", "", "", "", option.description()[i]}`.

If configured, this option renderer adds an additional row to display the default field value.

Returns:
  a new default OptionRenderer

#### createMinimalOptionRenderer

    public static CommandLine.Help.IOptionRenderer createMinimalOptionRenderer()

Returns a new minimal OptionRenderer which converts `Options` to a single row with two columns of text: an option name and a description. If multiple names or descriptions exist, the first value is used.

Returns:
  a new minimal OptionRenderer

#### createDefaultParameterRenderer

    public CommandLine.Help.IParameterRenderer createDefaultParameterRenderer()

Returns a new default ParameterRenderer which converts positional parameters to four columns of text to match the default TextTable column layout. The first row of values looks like this:

1. empty string
2. empty string
3. parameter(s) label as rendered by the `CommandLine.Help.IParamLabelRenderer`
4. first element of the `CommandLine.Model.PositionalParamSpec.description()` array

Following this, there will be one row for each of the remaining elements of the `CommandLine.Model.PositionalParamSpec.description()` array, and these rows look like `{"", "", "", param.description()[i]}`.

If configured, this parameter renderer adds an additional row to display the default field value.

Returns:
  a new default ParameterRenderer

#### createMinimalParameterRenderer

    public static CommandLine.Help.IParameterRenderer createMinimalParameterRenderer()

Returns a new minimal ParameterRenderer which converts positional parameters to a single row with two columns of text: an option name and a description. If multiple descriptions exist, the first value is used.

Returns:
  a new minimal ParameterRenderer

#### createMinimalParamLabelRenderer

    public static CommandLine.Help.IParamLabelRenderer createMinimalParamLabelRenderer()

Returns a value renderer that returns the `paramLabel` if defined or the field name otherwise.

Returns:
  a new minimal ParamLabelRenderer

#### createDefaultParamLabelRenderer

    public CommandLine.Help.IParamLabelRenderer createDefaultParamLabelRenderer()

Returns a new default param label renderer that separates option parameters from their option name with the specified separator string, and, unless `CommandLine.Model.ArgSpec.hideParamSyntax()` is true, surrounds optional parameters with `'['` and `']'` characters and uses ellipses ("...") to indicate that any number of a parameter are allowed.

Returns:
  a new default ParamLabelRenderer

#### createShortOptionNameComparator

    public static java.util.Comparator<CommandLine.Model.OptionSpec> createShortOptionNameComparator()

Sorts `OptionSpecs` by their option name in case-insensitive alphabetic order. If an option has multiple names, the shortest name is used for the sorting. Help options follow non-help options.

Returns:
  a comparator that sorts OptionSpecs by their option name in case-insensitive alphabetic order

#### createShortOptionArityAndNameComparator

    public static java.util.Comparator<CommandLine.Model.OptionSpec> createShortOptionArityAndNameComparator()

Sorts `OptionSpecs` by their option max arity first, by min arity next, and by option name last.

Returns:
  a comparator that sorts OptionSpecs by arity first, then their option name

#### shortestFirst

    public static java.util.Comparator<java.lang.String> shortestFirst()

Sorts short strings before longer strings.

Returns:
  a comparators that sorts short strings before longer strings

#### ansi

    public CommandLine.Help.Ansi ansi()

Returns whether ANSI escape codes are enabled or not.

Returns:
  whether ANSI escape codes are enabled or not

#### defaultColorScheme

    public static CommandLine.Help.ColorScheme defaultColorScheme(CommandLine.Help.Ansi ansi)

Creates and returns a new `CommandLine.Help.ColorScheme` initialized with picocli default values: commands are bold, options and parameters use a yellow foreground, and option parameters use italic.

Parameters:
  `ansi` - whether the usage help message should contain ANSI escape codes or not
Returns:
  a new default color scheme