def _init_args_parser()

in gcpdiag/lint/command.py [0:0]


def _init_args_parser():
  parser = argparse.ArgumentParser(
      description='Run diagnostics in GCP projects.', prog='gcpdiag lint')

  parser.add_argument(
      '--auth-adc',
      help='Authenticate using Application Default Credentials (default)',
      action='store_true')

  parser.add_argument(
      '--auth-key',
      help='Authenticate using a service account private key file',
      metavar='FILE')

  parser.add_argument('--auth-oauth',
                      help=argparse.SUPPRESS,
                      action='store_true')

  parser.add_argument('--universe-domain',
                      type=str,
                      default=config.get('universe_domain'),
                      help='Domain name of APIs')

  parser.add_argument('--project',
                      metavar='P',
                      required=True,
                      help='Project ID of project to inspect')

  parser.add_argument(
      '--name',
      nargs='+',
      metavar='n',
      help='Resource Name(s) to inspect (e.g.: bastion-host,prod-*)')

  parser.add_argument(
      '--location',
      nargs='+',
      metavar='R',
      help=
      'Valid GCP region/zone to scope inspection (e.g.: us-central1-a,us-central1)'
  )

  parser.add_argument(
      '--label',
      action=ParseMappingArg,
      metavar='key:value',
      help=(
          'One or more resource labels as key-value pair(s) to scope inspection '
          '(e.g.: env:prod, type:frontend or env=prod type=frontend)'))

  parser.add_argument(
      '--billing-project',
      metavar='P',
      help='Project used for billing/quota of API calls done by gcpdiag '
      '(default is the inspected project, requires '
      '\'serviceusage.services.use\' permission)')

  parser.add_argument('--show-skipped',
                      help='Show skipped rules',
                      action='store_true',
                      default=config.get('show_skipped'))

  parser.add_argument('--hide-skipped',
                      help=argparse.SUPPRESS,
                      action='store_false',
                      dest='show_skipped')

  parser.add_argument('--hide-ok',
                      help='Hide rules with result OK',
                      action='store_true',
                      default=config.get('hide_ok'))

  parser.add_argument('--show-ok',
                      help=argparse.SUPPRESS,
                      action='store_false',
                      dest='hide_ok')

  parser.add_argument(
      '--enable-gce-serial-buffer',
      help='Fetch serial port one output directly from the Compute API. '
      'Use this flag when not exporting serial port output to cloud logging.',
      action='store_true',
      dest='enable_gce_serial_buffer')

  parser.add_argument(
      '--include',
      help=('Include rule pattern (e.g.: `gke`, `gke/*/2021*`). '
            'Multiple pattern can be specified (comma separated, '
            'or with multiple arguments)'),
      action='append')

  parser.add_argument('--exclude',
                      help=('Exclude rule pattern (e.g.: `BP`, `*/*/2022*`)'),
                      action='append')

  parser.add_argument('--include-extended',
                      help=('Include extended rules. Additional rules might '
                            'generate false positives (default: False)'),
                      default=config.get('include_extended'),
                      action='store_true')

  parser.add_argument('--experimental-enable-async-rules',
                      help='Run experimental async rules (default: False)',
                      default=config.get('experimental_enable_async_rules'),
                      action='store_true')

  parser.add_argument('-v',
                      '--verbose',
                      action='count',
                      default=config.get('verbose'),
                      help='Increase log verbosity')

  parser.add_argument('--within-days',
                      metavar='D',
                      type=int,
                      help=(f'How far back to search logs and metrics (default:'
                            f" {config.get('within_days')} days)"),
                      default=config.get('within_days'))

  parser.add_argument('--config',
                      metavar='FILE',
                      type=str,
                      help='Read configuration from FILE')

  parser.add_argument('--logging-ratelimit-requests',
                      metavar='R',
                      type=int,
                      help=('Configure rate limit for logging queries (default:'
                            f" {config.get('logging_ratelimit_requests')})"))

  parser.add_argument(
      '--logging-ratelimit-period-seconds',
      metavar='S',
      type=int,
      help=('Configure rate limit period for logging queries (default:'
            f" {config.get('logging_ratelimit_period_seconds')} seconds)"))

  parser.add_argument('--logging-page-size',
                      metavar='P',
                      type=int,
                      help=('Configure page size for logging queries (default:'
                            f" {config.get('logging_page_size')})"))

  parser.add_argument(
      '--logging-fetch-max-entries',
      metavar='E',
      type=int,
      help=('Configure max entries to fetch by logging queries (default:'
            f" {config.get('logging_fetch_max_entries')})"))

  parser.add_argument(
      '--logging-fetch-max-time-seconds',
      metavar='S',
      type=int,
      help=('Configure timeout for logging queries (default:'
            f" {config.get('logging_fetch_max_time_seconds')} seconds)"))

  parser.add_argument(
      '--output',
      metavar='FORMATTER',
      default='terminal',
      type=str,
      help=(
          'Format output as one of [terminal, json, csv] (default: terminal)'))

  parser.add_argument('--interface',
                      metavar='FORMATTER',
                      default=config.get('interface'),
                      type=str,
                      help='What interface as one of [cli, api] (default: cli)')

  parser.add_argument('--reason',
                      type=str,
                      default=config.get('reason'),
                      help='The reason for running gcpdiag')
  return parser