JewelCli uses an annotated interface definition to automatically parse and present command line arguments.
Options are described in a declarative manner, by annotating a standard Java interface.
Options are automatically constrained to the Java type in the interface.
Lists are automatically created for options defined to return any type assignable from java.util.List. All values are checked against the defined generic type of the list.
Options defined as an enum type are automatically converted.
A regular expression can be specifed for each option, which the option's values must match.