#!/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 GitCheckout(revision, checkout_dir):
  with utils.ChangedWorkingDirectory(checkout_dir):
    cmd = ['git', 'checkout', revision]
    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().decode('utf-8')
