#!/bin/bash
#
# Copyright 2015 Google LLC
#
# This is a pre-push hook that does the following before uploading a
# CL for review:
# 1) check that python sources have been formatted with yapf.
# 2) allows the user to run the unit tests.

mydir="$(dirname "$(readlink -m "$0")")"

z40=0000000000000000000000000000000000000000

while IFS=' ' read local_ref local_sha remote_ref remote_sha; do
  if [[ "$local_sha" != $z40 ]]; then
    if [[ "$remote_sha" == $z40 ]]; then
      # New branch, examine commit on top of branch.
      range="$local_sha"
    else
      # Update to existing branch, examine new commits
      range="$remote_sha..$local_sha"
    fi
    all_files="$(git show --pretty="format:" --name-only "${range}")"
    # Note that ${all_files} may include files that were deleted. Hence, we
    # ignore any complaints about missing files.
    IGNORE_MISSING=1 "${mydir}/check-presubmit" ${all_files} || exit 1
  fi
done

exit 0
