Skip to content

Design Requirements

Jeff Garland edited this page May 15, 2015 · 5 revisions

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)
Clone this wiki locally