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)


Date: Sun 23 October 2011

Category: software

Tagged: flake8 git python foss