All files / src/parser mergeArgs.js

0% Statements 0/19
0% Branches 0/19
0% Functions 0/2
0% Lines 0/16

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24                                               
module.exports = parser => ({errs = [], argv = []} = {}) => {
  let errs2   = []
  const argv2 = {_: []}
 
  for (let i = 0; i < argv.length; i++) {
    const {key, values, types, opts} = argv[i]
 
    if (typeof types === 'undefined') {
      if (key !== '--') argv2['_'] = argv2['_'].concat(values)
    } else if (types === null) {
      const parse    = parser(opts || [])
      const {errs: errs3, argv} = parse({errs: [], argv: values})
 
      errs2      = errs3
      argv2[key] = Object.assign({}, argv2[key], argv)
    } else if (types.length === 0) {
      argv2[key] = typeof argv2[key] === 'undefined' ? true : argv2[key] < 2 ? 2 : argv2[key] + 1
    } else {
      argv2[key] = types.length === 1 ? values[0] : values
    }
  }
 
  return {errs: errs.concat(errs2), argv: argv2}
}