# Package picocli

Provides classes and interfaces for the main picocli command line parsing and `autocompletion` functionality.

See: Description

Interface Summary
CommandLine.Help.Ansi.IStyle: Defines the interface for an ANSI escape sequence.
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.
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.
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.
CommandLine.IDefaultValueProvider: Provides default value for a command.
CommandLine.IExceptionHandler: Deprecated see `CommandLine.execute(String...)`, `CommandLine.IParameterExceptionHandler` and `CommandLine.IExecutionExceptionHandler`
CommandLine.IExceptionHandler2<R>: Deprecated see `CommandLine.execute(String...)`, `CommandLine.IParameterExceptionHandler` and `CommandLine.IExecutionExceptionHandler`
CommandLine.IExecutionExceptionHandler: Classes implementing this interface know how to handle Exceptions that occurred while executing the `Runnable`, `Callable` or `Method` user object of the command.
CommandLine.IExecutionStrategy: Implementations are responsible for "executing" the user input and returning an exit code.
CommandLine.IExitCodeExceptionMapper: Interface that provides the appropriate exit code that will be returned from the `execute` method for an exception that occurred during parsing or while invoking the command's Runnable, Callable, or Method.
CommandLine.IExitCodeGenerator: `@Command`-annotated classes can implement this interface to specify an exit code that will be returned from the `execute` method when the command is successfully invoked.
CommandLine.IFactory: Factory for instantiating classes that are registered declaratively with annotation attributes, like `CommandLine.Command.subcommands()`, `CommandLine.Option.converter()`, `CommandLine.Parameters.converter()` and `CommandLine.Command.versionProvider()`.
CommandLine.IHelpCommandInitializable: Deprecated use `CommandLine.IHelpCommandInitializable2` instead
CommandLine.IHelpCommandInitializable2: Help commands that provide usage help for other commands can implement this interface to be initialized with the information they need.
CommandLine.IHelpFactory: Creates the `CommandLine.Help` instance used to render the usage help message.
CommandLine.IHelpSectionRenderer: Renders a section of the usage help message.
CommandLine.INegatableOptionTransformer: Determines the option name transformation of negatable boolean options.
CommandLine.IParameterExceptionHandler: Classes implementing this interface know how to handle `ParameterExceptions` (usually from invalid user input).
CommandLine.IParseResultHandler: Deprecated Use `CommandLine.IExecutionStrategy` instead.
CommandLine.IParseResultHandler2<R>: Deprecated use `CommandLine.IExecutionStrategy` instead, see `CommandLine.execute(String...)`
CommandLine.ITypeConverter<K>: When parsing command line arguments and initializing fields annotated with `@Option` or `@Parameters`, String values can be converted to any type for which a `ITypeConverter` is registered.
CommandLine.IVersionProvider: Provides version information for a command.
CommandLine.Model.IAnnotatedElement: Internal interface to allow annotation processors to construct a command model at compile time.
CommandLine.Model.IGetter: Customizable getter for obtaining the current value of an option or positional parameter.
CommandLine.Model.IOrdered: Interface for sorting `options` and `groups` together.
CommandLine.Model.IScope: The scope of a binding is the context where the current value should be gotten from or set to.
CommandLine.Model.ISetter: Customizable setter for modifying the value of an option or positional parameter.
CommandLine.Model.ITypeInfo: Encapculates type information for an option or parameter to make this information available both at runtime and at compile time (when `Class` values are not available).

Class Summary
AutoComplete: Stand-alone tool that generates bash auto-complete scripts for picocli-based command line applications.
CommandLine: CommandLine interpreter that uses reflection to initialize an annotated user object with values obtained from the command line arguments.
CommandLine.AbstractHandler<R,T extends CommandLine.AbstractHandler<R,T>>: Deprecated see `CommandLine.execute(String...)`
CommandLine.AbstractParseResultHandler<R>: Deprecated see `CommandLine.execute(String...)`, `CommandLine.getExecutionStrategy()`, `CommandLine.getParameterExceptionHandler()`, `CommandLine.getExecutionExceptionHandler()`
CommandLine.DefaultExceptionHandler<R>: Deprecated see `CommandLine.execute(String...)`, `CommandLine.getParameterExceptionHandler()` and `CommandLine.getExecutionExceptionHandler()`
CommandLine.ExitCode: Defines some exit codes used by picocli as default return values from the `execute` and `executeHelpRequest` methods.
CommandLine.Help: 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.
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.
CommandLine.Help.ColorScheme.Builder: Builder class to create `ColorScheme` instances.
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.
CommandLine.Help.Layout: Use a Layout to format usage help text for options and parameters in tabular format.
CommandLine.Help.TextTable: Responsible for spacing out `CommandLine.Help.Ansi.Text` values according to the `CommandLine.Help.Column` definitions the table was created with.
CommandLine.Help.TextTable.Cell: Helper class to index positions in a `Help.TextTable`.
CommandLine.HelpCommand: Help command that can be installed as a subcommand on all application commands.
CommandLine.Model: This class provides a namespace for classes and interfaces that model concepts and attributes of command line interfaces in picocli.
CommandLine.Model.ArgGroupSpec: The `ArgGroupSpec` class models a `group` of arguments (options, positional parameters or a mixture of the two).
CommandLine.Model.ArgGroupSpec.Builder: Builder responsible for creating valid `ArgGroupSpec` objects.
CommandLine.Model.ArgSpec: Models the shared attributes of `CommandLine.Model.OptionSpec` and `CommandLine.Model.PositionalParamSpec`.
CommandLine.Model.CommandSpec: The `CommandSpec` class models a command specification, including the options, positional parameters and subcommands supported by the command, as well as attributes for the version help message and the usage help message of the command.
CommandLine.Model.Messages: Utility class for getting resource bundle strings.
CommandLine.Model.MethodParam: Command method parameter, similar to java.lang.reflect.Parameter (not available before Java 8).
CommandLine.Model.OptionSpec: The `OptionSpec` class models aspects of a named option of a command, including whether it is required or optional, the option parameters supported (or required) by the option, and attributes for the usage help message describing the option.
CommandLine.Model.OptionSpec.Builder: Builder responsible for creating valid `OptionSpec` objects.
CommandLine.Model.ParserSpec: Models parser configuration specification.
CommandLine.Model.PositionalParamSpec: The `PositionalParamSpec` class models aspects of a positional parameter of a command, including whether it is required or optional, and attributes for the usage help message describing the positional parameter.
CommandLine.Model.PositionalParamSpec.Builder: Builder responsible for creating valid `PositionalParamSpec` objects.
CommandLine.Model.UnmatchedArgsBinding: This class allows applications to specify a custom binding that will be invoked for unmatched arguments.
CommandLine.Model.UsageMessageSpec: Models the usage help message specification and can be used to customize the usage help message.
CommandLine.ParseResult: Encapsulates the result of parsing an array of command line arguments.
CommandLine.ParseResult.Builder: Builds immutable `ParseResult` instances.
CommandLine.ParseResult.GroupMatch: A group's multiplicity specifies how many matches of a group may appear on the command line.
CommandLine.ParseResult.GroupMatchContainer: Provides information about an `CommandLine.ArgGroup` that was matched on the command line.
CommandLine.Range: Describes the number of parameters required and accepted by an option or a positional parameter.
CommandLine.RegexTransformer: A regular expression-based option name transformation for negatable options.
CommandLine.RegexTransformer.Builder: Builder for creating `RegexTransformer` objects.
CommandLine.RunAll: Command line execution strategy that prints help if requested, and otherwise executes the top-level command and all subcommands as `Runnable`, `Callable` or `Method`.
CommandLine.RunFirst: Command line execution strategy that prints help if requested, and otherwise executes the top-level `Runnable` or `Callable` command.
CommandLine.RunLast: Command line execution strategy that prints help if requested, and otherwise executes the most specific `Runnable` or `Callable` subcommand.

Enum Summary
CommandLine.Help.Ansi: Provides methods and inner classes to support using ANSI escape codes in usage help messages.
CommandLine.Help.Ansi.Style: A set of pre-defined ANSI escape code styles and colors, and a set of convenience methods for parsing text with embedded markup style names, as well as convenience methods for converting styles to strings with embedded escape codes.
CommandLine.Help.Column.Overflow: Policy for handling text that is longer than the column width: span multiple columns, wrap to the next row, or simply truncate the portion that doesn't fit.
CommandLine.Help.Visibility: Controls the visibility of certain aspects of the usage help message.

Exception Summary
CommandLine.DuplicateNameException: Exception indicating that multiple named elements have incorrectly used the same name.
CommandLine.DuplicateOptionAnnotationsException: Exception indicating that multiple fields have been annotated with the same Option name.
CommandLine.ExecutionException: Exception indicating a problem while invoking a command or subcommand.
CommandLine.InitializationException: Exception indicating a problem during `CommandLine` initialization.
CommandLine.MaxValuesExceededException: Exception indicating that more values were specified for an option or parameter than its `arity` allows.
CommandLine.MissingParameterException: Exception indicating that a required parameter was not specified.
CommandLine.MissingTypeConverterException: Exception indicating that an annotated field had a type for which no `CommandLine.ITypeConverter` was registered.
CommandLine.MutuallyExclusiveArgsException: Exception indicating that the user input included multiple arguments from a mutually exclusive group.
CommandLine.OverwrittenOptionException: Exception indicating that an option for a single-value option field has been specified multiple times on the command line.
CommandLine.ParameterException: Exception indicating something went wrong while parsing command line options.
CommandLine.ParameterIndexGapException: Exception indicating that there was a gap in the indices of the fields annotated with `CommandLine.Parameters`.
CommandLine.PicocliException: Base class of all exceptions thrown by `picocli.CommandLine`.
CommandLine.TypeConversionException: Exception thrown by `CommandLine.ITypeConverter` implementations to indicate a String could not be converted.
CommandLine.UnmatchedArgumentException: Exception indicating that a command line argument could not be mapped to any of the fields annotated with `CommandLine.Option` or `CommandLine.Parameters`.

Annotation Types Summary
CommandLine.ArgGroup: A `Command` may define one or more `ArgGroups`: a group of options, positional parameters or a mixture of the two.
CommandLine.Command: Annotate your class with `@Command` when you want more control over the format of the generated help message.
CommandLine.Mixin: Fields annotated with `@Mixin` are "expanded" into the current command: `@Option` and `@Parameters` in the mixin class are added to the options and positional parameters of this command.
CommandLine.Option: Annotate fields in your class with `@Option` and picocli will initialize these fields when matching arguments are specified on the command line.
CommandLine.Parameters: Fields annotated with `@Parameters` will be initialized with positional parameters.
CommandLine.ParentCommand: Fields annotated with `@ParentCommand` will be initialized with the parent command of the current subcommand.
CommandLine.Spec: Fields annotated with `@Spec` will be initialized with the `CommandSpec` for the command the field is part of.
CommandLine.Unmatched: Fields annotated with `@Unmatched` will be initialized with the list of unmatched command line arguments, if any.

## Package picocli Description

Provides classes and interfaces for the main picocli command line parsing and `autocompletion` functionality.

The `CommandLine` class is a one-file framework for creating Java command line applications with almost zero code. `CommandLine` is in a single file, so it can be included in source form. This lets users run picocli-based applications without requiring picocli as an external dependency.

## Classes and Interfaces for Defining a CommandSpec Model

## Classes Related to Parsing Command Line Arguments

## Class Diagram of the Picocli Exceptions

## Class Diagram of the CommandLine.Help API