Created
January 30, 2022 15:19
-
-
Save dlucian/a6b0216d24e49b4f746bad441c0cf9e8 to your computer and use it in GitHub Desktop.
Pre-commit script that checks php parse, phpcs (+auto-fix) and phpmd for the committing files
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/bash | |
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )/../../" && pwd )" | |
PROJECT=`php -r "echo 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..." | |
phpcs --standard=PSR12 --encoding=utf-8 -n -p ./app ./routes ./config | |
if [ $? != 0 ] | |
then | |
echo "Coding standards errors have been detected. Running phpcbf..." | |
phpcbf --standard=PSR12 --encoding=utf-8 -n -p ./app ./routes ./config | |
git add $FILES | |
echo "Running Code Sniffer again..." | |
phpcs --standard=PSR12 --encoding=utf-8 -n -p ./app ./routes ./config | |
if [ $? != 0 ] | |
then | |
echo "Errors found not fixable automatically" | |
exit 1 | |
fi | |
fi | |
fi | |
echo "Running PHP Mess Detector..." | |
for FILE in $SFILES | |
do | |
if [[ $FILE == app* ]] ; | |
then | |
echo " - Checking $FILE" | |
phpmd $FILE text $DIR/phpmd.xml | |
if [ $? != 0 ] | |
then | |
echo "Fix the error(s) before commit." | |
exit 1 | |
fi | |
fi | |
FILES="$FILES $PROJECT/$FILE" | |
done | |
exit $? |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment