#!/usr/bin/env python3
# Copyright (c) 2019, the R8 project authors. Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.

import utils
import subprocess

def GitClone(url, checkout_dir):
  cmd = ['git', 'clone', url, checkout_dir]
  utils.PrintCmd(cmd)
  return subprocess.check_call(cmd)

def GetHeadRevision(checkout_dir, use_main=False):
  revision_from = 'origin/main' if use_main else 'HEAD'
  cmd = ['git', 'rev-parse', revision_from]
  utils.PrintCmd(cmd)
  with utils.ChangedWorkingDirectory(checkout_dir):
    return subprocess.check_output(cmd).strip()
