docs: function argufy(config = {}, args = process.argv) {
    let [, , ...argv] = args
    const titles = findTitles(argv)
    argv = argv.slice(titles.length)
    let commandFound = !titles.length
    const res = Object.keys(config).reduce(({ _argv, ...acc }, key) => {
      if (_argv.length == 0 && commandFound) return { _argv, ...acc }
      const val = config[key]
      let value
      if (typeof val == 'string') {
        ({ value, argv: _argv } = find(_argv, key, val))
      } else {
        try {
          const { short, boolean, number, command, multiple } = val
          if (command && multiple && titles.length) {
            value = titles
            commandFound = true
          } else if (command && titles.length) {
            value = titles[0]
            commandFound = true
          } else {
            ({ value, argv: _argv } = find(_argv, key, short, boolean, number))
          }
        } catch (err) {
          return { _argv, ...acc }
        }
      }
      if (value === undefined) return { _argv, ...acc }
      const r = { _argv, ...acc, [key]: value }
      return r
    }, {
      _argv: argv,
    })
    return res
  }