Created
July 15, 2014 09:45
-
-
Save jdecool/66b71db1d68b7b5c8eb5 to your computer and use it in GitHub Desktop.
Standard PHP Git pre-commit
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
PROJECT=`php -r "echo dirname(dirname(dirname(realpath('$0'))));"` | |
STAGED_FILES_CMD=`git diff --cached --name-only --diff-filter=ACMR HEAD | grep \\\\.php` | |
# Determine if a file list is passed | |
if [ "$#" -eq 1 ] | |
then | |
oIFS=$IFS | |
IFS=' | |
' | |
SFILES="$1" | |
IFS=$oIFS | |
fi | |
SFILES=${SFILES:-$STAGED_FILES_CMD} | |
# Simple check for merge conflics | |
echo "Checking unresolved conflicts..." | |
if [[ -n $CONFLICTS ]]; then | |
conflicts=`git diff --cached --name-only -S'<<<<<< HEAD'` | |
if [ -n "$conflicts" ]; then | |
echo "Fix merge conflicts before commit" | |
echo $conflicts | |
exit 1 | |
fi | |
fi | |
# Check syntax | |
echo "Checking PHP Lint..." | |
for FILE in $SFILES | |
do | |
php -l -d display_errors=0 $PROJECT/$FILE | |
if [ $? != 0 ] | |
then | |
echo "Fix the error before commit." | |
exit 1 | |
fi | |
FILES="$FILES $PROJECT/$FILE" | |
done | |
# PHP Code Sniffer | |
if [ "$FILES" != "" ] | |
then | |
echo "Running Code Sniffer..." | |
phpcs --standard=PSR2 --encoding=utf-8 -n -p $FILES | |
if [ $? != 0 ] | |
then | |
echo "Fix the error before commit." | |
exit 1 | |
fi | |
fi | |
# Looking for debug trace | |
echo "Checking debug trace" | |
VAR=$(git diff --cached --name-only --diff-filter=ACMR | xargs grep -w "console\.(debug|info|log|warn)\|var_dump\|print_r" -n | grep -v "//") | |
if [ ! -z "$VAR" ]; then | |
echo "** Debug trace detected." | |
exit 1 | |
fi | |
exit $? |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment