Future Development Plans

The CLIC library is far from being finished. What follows is a list of possible development features to be added to the library as it evolves.

Property Implementation Configuration

Currently enabling of Apache configuration properties automatically inserts the default value for list characters as a comma.

Property implementation configuration will enable all APIs to be able to pass values to their property builders to be able to configure and fine-tune the underlying property implementation. In the case of Apache configuration, this will enable setting on or off if lists should have a default, and what the default character should be.

Likewise (for example) a database-based property reader would be able to configure the database connection settings for the underlying database.

Option Value Text Substitutions

It's not uncommon that command line help options reference other command line switches. Currently, developers have to hard-code referenced strings. For example:

option.max-time.description = Set the max-time; cannot be set if if \
    -n/--no-wait is set.

The option-based text substitution approach will enable API users to reference the disallowed property by specifying a substitution, which the API will convert to -n/--no-wait, for example:

option.max-time.description = Set the max-time; cannot be set if if \
    ${option:no-wait} is set.

Option Constraints

Currently API users have to code constraints between options using Java code once the command line options have been processed. Constraints between options can be things such as option x cannot be used with option y, option x can only be used on its own without any other options, and option a has to be used along with options b and c.

The plan is for the API to enable new properties to be associated with option definitions to cater for options such as:

  • Mutually exclusive: Defined options will report an error if two mutually exclusive options are used together;

  • Singletons: Options that are only meant to be supplied on their own without other options;

  • Depends-On: Otions that rely on another option being present.

Those are just a few ideas for constraints, more thought to be applied yet.

Source Generation For Underlying Property Implementations

The CLC format lends itself well to source generation, as show-cased by the cli-gen-src command.

One idea is to use the same CLC format to generate the actual source code for a given property implementation; for example, to generate classes and code for the commons-cli library such that callers could generate application source code for use with their application.