docs: def manual_argument_parsing(argv):
      """sadness because argparse doesn't quite do what we want."""
  
      # Special case these for a better error message
      if not argv or argv == ['-h'] or argv == ['--help']:
          print_help_and_exit()
  
      try:
          dashdash_index = argv.index('--')
      except ValueError:
          print_std_err('Must separate command by `--`')
          print_help_and_exit()
  
      patches, cmd = argv[:dashdash_index], argv[dashdash_index + 1:]
  
      if '--help' in patches or '-h' in patches:
          print_help_and_exit()
  
      if '--all' in patches:
          all_patches = True
          patches.remove('--all')
      else:
          all_patches = False
  
      unknown_options = [patch for patch in patches if patch.startswith('-')]
      if unknown_options:
          print_std_err('Unknown options: {!r}'.format(unknown_options))
          print_help_and_exit()
  
      if patches and all_patches:
          print_std_err('--all and patches specified: {!r}'.format(patches))
          print_help_and_exit()
  
      return Arguments(all=all_patches, patches=tuple(patches), cmd=tuple(cmd))