def _get_benchmark_config_and_clone_repos()

in benchmark.py [0:0]


def _get_benchmark_config_and_clone_repos(argv):
  """From the flags/config file, get the benchmark units.

  Args:
    argv: the command line arguments.

  Returns:
    An instance of BenchmarkConfig that contains the benchmark units.
  """
  if FLAGS.benchmark_config:
    config = BenchmarkConfig.from_file(FLAGS.benchmark_config)
    project_source = config.get_project_source()
    project_clone_repo = _setup_project_repo(
        PROJECT_CLONE_BASE_PATH + '/' + _get_clone_subdir(project_source),
        project_source)
    bazel_clone_repo = _setup_project_repo(BAZEL_CLONE_PATH,
                                           config.get_bazel_source())

    return config, bazel_clone_repo, project_clone_repo

  # Strip off 'benchmark.py' from argv
  # argv would be something like:
  # ['benchmark.py', 'build', '--nobuild', '//:all']
  bazel_args = argv[1:]

  # Building Bazel binaries
  bazel_binaries = FLAGS.bazel_binaries or []
  logger.log('Preparing bazelbuild/bazel repository.')
  bazel_source = FLAGS.bazel_source if FLAGS.bazel_source else BAZEL_GITHUB_URL
  bazel_clone_repo = _setup_project_repo(BAZEL_CLONE_PATH, bazel_source)
  bazel_commits = _get_commits_topological(
      FLAGS.bazel_commits,
      bazel_clone_repo,
      'bazel_commits',
      fill_default=not FLAGS.bazel_commits and not bazel_binaries)

  # Set up project repo
  logger.log('Preparing %s clone.' % FLAGS.project_source)
  project_clone_repo = _setup_project_repo(
      PROJECT_CLONE_BASE_PATH + '/' + _get_clone_subdir(FLAGS.project_source),
      FLAGS.project_source)

  project_commits = _get_commits_topological(FLAGS.project_commits,
                                             project_clone_repo,
                                             'project_commits')
  config = BenchmarkConfig.from_flags(bazel_commits, bazel_binaries,
                                      project_commits, bazel_source,
                                      FLAGS.project_source, FLAGS.runs,
                                      FLAGS.collect_json_profile,
                                      ' '.join(bazel_args))

  return config, bazel_clone_repo, project_clone_repo