Created
April 18, 2016 22:09
-
-
Save kieranajp/3e356d27be5deec62fcfcda974fdc790 to your computer and use it in GitHub Desktop.
pre-commit hook to run phpcs
This file contains 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 | |
PRE_COMMIT="$(cat <<'EOF' | |
#!/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} | |
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 | |
if [ "$FILES" != "" ] | |
then | |
echo "Running Code Sniffer..." | |
./bin/phpcs --standard=PSR2 --encoding=utf-8 -n -p $FILES | |
if [ $? != 0 ] | |
then | |
echo "Fix the error before commit." | |
exit 1 | |
fi | |
fi | |
exit $? | |
EOF | |
)" | |
echo "$PRE_COMMIT" > .git/hooks/pre-commit | |
chmod +x .git/hooks/pre-commit |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
You can save this as a
.sh
file and set this as a composer post-install script; that will enforce PSR-2 and PHP Lint for everyone who tries to commit.To temporarily disable it, you can
chmod -x .git/hooks/pre-commit
, and then put+x
back to re-enable it.