Skip to content

Define a public API for CommandLineArgumentParser and CommandLineProgram #127

@cmnbroad

Description

@cmnbroad

In order to allow consumers of CommandLineArgumentParser to have greater control over parser behavior, we should make the following changes:

  • Define a public interface for CommandLineArgumentParser and allow it to be subclassed, possibly including a factory for ArgumentDefinition (see CommandLineArgumentParser ArgumentDefinition class should be factored out #9).
  • Define the CommandLineProgram base class (see Add CommandLineProgram interface #96), and include an overridable implementation of getCommandLineParser(). This would allow tools to provide specialized behavior for the parser.
  • Refactor/replace SpecialArgumentsCollection to allow the consumer to control the names of the arguments that are visible to users, and address some current issues (like Barclay needing to know how to display a toolkit’s version).

This would provide a generalized mechanism for allowing customization, and help enable solutions for a number of issues such as (i.e. #126, #123, and possibly #34 and #106) by allowing the consumer to provide specialized behavior through method overrides. It would require a major version bump, although it may be possible to do in a minor version bump by providing new classes and leaving the old ones in place as deprecated.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions