#!/bin/sh
#
# Git hook script to verify what is about to be committed.
# Checks that the changes don't introduce new flake8 errors.

TMPDIFF=`tempfile`
FLAKE8="`git rev-parse --show-toplevel`/bin/flake8"

status=0

# select only changed python files which are not migrations
changed=`git diff --cached --name-only | grep 'py$' | grep -v 'migrations/[0-9]'`
if [ -z $changed ] ; then
    # Nothing to check. Note the exit is necessary -- we would not pass any
    # paths to git diff below and it would output the diff unfiltered.
    exit 0
fi

git diff --unified=1 --cached HEAD -- $changed > $TMPDIFF

# only do the check when there are some changes to be commited
# otherwise flake8 would hang waiting for input
if [ -s $TMPDIFF ] ; then
    cat $TMPDIFF | $FLAKE8 --diff
    status=$?
fi

rm -f $TMPDIFF

exit $status