#!/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.

'''
Sets up githooks.
'''

import os
import subprocess
import sys

SRC_ROOT = os.path.dirname(
    os.path.dirname(
        os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    )
)
FLUTTER_DIR = os.path.join(SRC_ROOT, 'flutter')


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


def Main(argv):
  git = 'git'
  githooks = os.path.join(FLUTTER_DIR, 'tools', 'githooks')
  if IsWindows():
    git = 'git.bat'
    githooks = os.path.join(githooks, 'windows')
  result = subprocess.run([
      git,
      'config',
      'core.hooksPath',
      githooks,
  ],
                          cwd=FLUTTER_DIR)
  return result.returncode


if __name__ == '__main__':
  sys.exit(Main(sys.argv))
