docs: def create_agent_parser(device_type):
      """Create an ArgumentParser for this tool."""
      epilog = ('See https://github.com/romanz/trezor-agent/blob/master/'
                'doc/README-SSH.md for usage examples.')
      p = configargparse.ArgParser(default_config_files=['~/.ssh/agent.config'],
                                   epilog=epilog)
      p.add_argument('-v', '--verbose', default=0, action='count')
  
      agent_package = device_type.package_name()
      resources_map = {r.key: r for r in pkg_resources.require(agent_package)}
      resources = [resources_map[agent_package], resources_map['libagent']]
      versions = '\n'.join('{}={}'.format(r.key, r.version) for r in resources)
      p.add_argument('--version', help='print the version info',
                     action='version', version=versions)
  
      curve_names = [name for name in formats.SUPPORTED_CURVES]
      curve_names = ', '.join(sorted(curve_names))
      p.add_argument('-e', '--ecdsa-curve-name', metavar='CURVE',
                     default=formats.CURVE_NIST256,
                     help='specify ECDSA curve name: ' + curve_names)
      p.add_argument('--timeout',
                     default=UNIX_SOCKET_TIMEOUT, type=float,
                     help='timeout for accepting SSH client connections')
      p.add_argument('--debug', default=False, action='store_true',
                     help='log SSH protocol messages for debugging.')
      p.add_argument('--log-file', type=str,
                     help='Path to the log file (to be written by the agent).')
      p.add_argument('--sock-path', type=str,
                     help='Path to the UNIX domain socket of the agent.')
  
      p.add_argument('--pin-entry-binary', type=str, default='pinentry',
                     help='Path to PIN entry UI helper.')
      p.add_argument('--passphrase-entry-binary', type=str, default='pinentry',
                     help='Path to passphrase entry UI helper.')
      p.add_argument('--cache-expiry-seconds', type=float, default=float('inf'),
                     help='Expire passphrase from cache after this duration.')
  
      g = p.add_mutually_exclusive_group()
      g.add_argument('-d', '--daemonize', default=False, action='store_true',
                     help='Daemonize the agent and print its UNIX socket path')
      g.add_argument('-f', '--foreground', default=False, action='store_true',
                     help='Run agent in foreground with specified UNIX socket path')
      g.add_argument('-s', '--shell', default=False, action='store_true',
                     help=('run ${SHELL} as subprocess under SSH agent, allowing '
                           'regular SSH-based tools to be used in the shell'))
      g.add_argument('-c', '--connect', default=False, action='store_true',
                     help='connect to specified host via SSH')
      g.add_argument('--mosh', default=False, action='store_true',
                     help='connect to specified host via using Mosh')
  
      p.add_argument('identity', type=_to_unicode, default=None,
                     help='proto://[user@]host[:port][/path]')
      p.add_argument('command', type=str, nargs='*', metavar='ARGUMENT',
                     help='command to run under the SSH agent')
      return p