Design Requirements - JeffGarland/liaw2015 GitHub Wiki
Accepted Requirements
- Colocate option specification: names and aliases, doc string, type default values, size of array (repetition count)
- Error checking as early as possible
- Merging multiple configurations with conflict handling per option
- Positional arguments
- Arguments with multiple parameters, e.g. arrays on the command line
- Explicit refresh of data source
- User defined types, e.g. The Garland Date Time
- Dynamic/run-time configuration of options in the ParameterSpec. Compile time addition of new types.
- Custom data sources
- At least one command-line data source built in to library (should this be program options?)
- Data sources return tree-like data
- API will permit substitution rules
##Rejected Requirements
- Conflict resolution between options (out of library scope
- Static type checking (too difficult, usability issues, collides with dynamic changes, also Michal's library https://github.com/griwes/ReaverLib already provides this)
- Lazy data fetching from data source (conflict with "error checking as early as possible" requirement)
- Non-string keys (reserved for 2.0)