Parser for testplane configuration files.
Config is described with a combination of a functions:
var parser = root(section({
system: section({
parallelLimit: option({
parseEnv: Number,
parseCli: Number,
validate: function() {...}
})
}),
browsers: map(
section({
calibrate: option(...),
windowSize: option(...)
})
)
})There are 4 types of values:
option({defaultValue, parseCli, parseEnv, validate, map})- a single scalar option.defaultValue- a default value to use if option is not provideddefaultValue(config, currentNode)- a function to compute default valueparseCli(value)- a function used to parse command-line argumentsparseEnv(value)- a function used to parse environment variablevalidate(value, config, currentNode, meta)- a function used to validate the option valuemap(value, config, currentNode, meta)- a function used to transform the option value
section({sectionName1: valueParser1, sectionName2: valueParser2, ...})- a section of a values with specified key names. Each option will parsed with appropriate parser function. Any unknown value passed by user will be treated as an error.map(valueParser, defaultValue)- a map with any number of user-specified keys. Each value is parsed byvalueParser. If set,defaultValuewill be used in case of no user-specified data provided.root(parser, {envPrefix, cliPrefix})- creates a root config parsers from specifed parser function. Returns function with signaturef({options, env, argv}).