-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Description
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