running flake8 in git’s pre-commit

I’m forever forgetting to remove debug statements or to run flake8 on my source code. Not to panic though, git hooks to the rescue!

You can just put pre-commit into $PROJECT_DIR/.git/hooks, chmod +x it and be away.

This is the useful part of the file;

ret_code=0
for file in $(git diff --name-only --cached $against); do
    if [[ -n "$(grep 'DEBUGS' $file)" ]]; then
        echo "DEBUGS in file $file"
        ret_code=1
    fi

    if [[ "${file##*.}" == "py" ]]; then
        flake8 $file

        if [[ $? != 0 ]]; then
            ret_code=1
        fi
    fi
done

exit $ret_code

$against is the commit to check against (taken from the pre-commit.sample file).

DEBUGS is the comment tag I use to denote debug statements, which is used by geany in the Task addons plugin to list any occurrences of it in the file (along with TODO and FIXME comments)