# Copyright (c) 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from perf_insights import local_directory_corpus_driver
from perf_insights import perf_insights_corpus_driver


# TODO(simonhatch): Use telemetry's discover.py module once its part of
# catapult.
_CORPUS_DRIVERS = {
  'perf-insights': {
      'description': 'Use the performance insights server.',
      'class': perf_insights_corpus_driver.PerfInsightsCorpusDriver
  },
  'local-directory': {
      'description': 'Use traces from a local directory.',
      'class': local_directory_corpus_driver.LocalDirectoryCorpusDriver
  },
  'list': None
}
_CORPUS_DRIVER_DEFAULT = 'perf-insights'


def AddArguments(parser):
  parser.add_argument(
      '-c', '--corpus',
      choices=_CORPUS_DRIVERS.keys(),
      default=_CORPUS_DRIVER_DEFAULT)
  for k, v in _CORPUS_DRIVERS.iteritems():
    if not v:
      continue
    parser_group = parser.add_argument_group(k)
    driver_cls = v['class']
    driver_cls.AddArguments(parser_group)


def GetCorpusDriver(parser, args):
  # With parse_known_args, optional arguments aren't guaranteed to be there so
  # we need to check if it's there, and use the default otherwise.
  corpus = _CORPUS_DRIVER_DEFAULT
  if hasattr(args, 'corpus'):
    corpus = args.corpus

  if corpus == 'list':
    corpus_descriptions = '\n'.join(
        ['%s: %s' % (k, v['description'])
            for k, v in _CORPUS_DRIVERS.iteritems() if v]
      )
    parser.exit('Valid drivers:\n\n%s\n' % corpus_descriptions)

  cls = _CORPUS_DRIVERS[corpus]['class']
  init_args = cls.CheckAndCreateInitArguments(parser, args)
  return cls(**init_args)

# Copyright (c) 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from perf_insights import local_directory_corpus_driver
from perf_insights import perf_insights_corpus_driver


# TODO(simonhatch): Use telemetry's discover.py module once its part of
# catapult.
_CORPUS_DRIVERS = {
  'perf-insights': {
      'description': 'Use the performance insights server.',
      'class': perf_insights_corpus_driver.PerfInsightsCorpusDriver
  },
  'local-directory': {
      'description': 'Use traces from a local directory.',
      'class': local_directory_corpus_driver.LocalDirectoryCorpusDriver
  },
  'list': None
}
_CORPUS_DRIVER_DEFAULT = 'perf-insights'


def AddArguments(parser):
  parser.add_argument(
      '-c', '--corpus',
      choices=_CORPUS_DRIVERS.keys(),
      default=_CORPUS_DRIVER_DEFAULT)
  for k, v in _CORPUS_DRIVERS.iteritems():
    if not v:
      continue
    parser_group = parser.add_argument_group(k)
    driver_cls = v['class']
    driver_cls.AddArguments(parser_group)


def GetCorpusDriver(parser, args):
  # With parse_known_args, optional arguments aren't guaranteed to be there so
  # we need to check if it's there, and use the default otherwise.
  corpus = _CORPUS_DRIVER_DEFAULT
  if hasattr(args, 'corpus'):
    corpus = args.corpus

  if corpus == 'list':
    corpus_descriptions = '\n'.join(
        ['%s: %s' % (k, v['description'])
            for k, v in _CORPUS_DRIVERS.iteritems() if v]
      )
    parser.exit('Valid drivers:\n\n%s\n' % corpus_descriptions)

  cls = _CORPUS_DRIVERS[corpus]['class']
  init_args = cls.CheckAndCreateInitArguments(parser, args)
  return cls(**init_args)

# Copyright (c) 2015 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # TODO(simonhatch): Use telemetry's discover.py module once its part of # catapult. # With parse_known_args, optional arguments aren't guaranteed to be there so # we need to check if it's there, and use the default otherwise.