#!/usr/bin/env python3
#
# Copyright 2013 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""Get the Git HEAD revision of a specified Git repository."""

import sys
import subprocess
import os
import argparse


def is_windows():
  os_id = sys.platform
  return os_id.startswith('win32') or os_id.startswith('cygwin')


def get_repository_version(repository):
  'Returns the Git HEAD for the supplied repository path as a string.'
  if not os.path.exists(repository):
    raise IOError('path does not exist')

  git = 'git'
  if is_windows():
    git = 'git.bat'
  version = subprocess.check_output([
      git,
      '-C',
      repository,
      'rev-parse',
      'HEAD',
  ])

  return str(version.strip(), 'utf-8')


def main():
  parser = argparse.ArgumentParser()

  parser.add_argument(
      '--repository',
      action='store',
      help='Path to the Git repository.',
      required=True
  )

  args = parser.parse_args()
  repository = os.path.abspath(args.repository)
  version = get_repository_version(repository)
  print(version.strip())

  return 0


if __name__ == '__main__':
  sys.exit(main())
