93 lines
2 KiB
Bash
93 lines
2 KiB
Bash
#!/bin/sh
|
|
|
|
# Check PHPCS before commit
|
|
# Ref -
|
|
# https://github.com/smgladkovskiy/phpcs-git-pre-commit/blob/master/src/pre-commit
|
|
# https://dev.to/akdevcraft/git-pre-hook-pre-commit-hook-with-npm-project-44p2
|
|
|
|
echo "***** Running pre-commit ******"
|
|
|
|
PROJECT=$(php -r "echo dirname(dirname(dirname(realpath('$0'))));")
|
|
STAGED_FILES_CMD=$(git diff --cached --name-only --diff-filter=ACMR HEAD | grep \\.php)
|
|
UNSTAGED_FILES_CMD=$(git diff --name-only --diff-filter=ACMR | 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}
|
|
|
|
STAGED_BUT_MODIFIED_FILES=$(php -r "\$sfiles=(explode(\"\\n\", '$SFILES'));\$usfiles=(explode(\"\\n\", '$UNSTAGED_FILES_CMD'));echo implode(\"\\n\",array_intersect(\$usfiles,\$sfiles));")
|
|
|
|
if [ -z "$STAGED_BUT_MODIFIED_FILES" ]; then
|
|
echo "OK"
|
|
else
|
|
echo "Files staged but then modified:\n"
|
|
echo "${STAGED_BUT_MODIFIED_FILES}"
|
|
exit 1
|
|
fi
|
|
|
|
# echo $PROJECT
|
|
# echo $SFILES
|
|
|
|
echo "Checking files for PHP Lint..."
|
|
for FILE in $SFILES
|
|
do
|
|
# echo "$PROJECT/$FILE"
|
|
php -l -d display_errors=0 "./$FILE"
|
|
if [ $? != 0 ]
|
|
then
|
|
echo "Fix the error before commit."
|
|
exit 1
|
|
fi
|
|
FILES="$FILES ./$FILE"
|
|
done
|
|
|
|
if [ "$FILES" = "" ]
|
|
then
|
|
echo "All good..."
|
|
exit 0
|
|
fi
|
|
|
|
if [ "$FILES" != "" ]
|
|
then
|
|
echo "Running PHPCS (Code Sniffer) Check..."
|
|
composer lint -n $FILES
|
|
if [ $? != 0 ]
|
|
then
|
|
echo "Please fix the PHPCS errors before commit!"
|
|
echo " => Run this command for automatic fixes."
|
|
echo " composer format-- $FILES"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
if [ "$FILES" != "" ]
|
|
then
|
|
echo "Running CSS linting issues..."
|
|
npm run lint:css
|
|
if [ $? != 0 ]
|
|
then
|
|
echo "Please fix the CSS issues before commit!"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
if [ "$FILES" != "" ]
|
|
then
|
|
echo "Running JS linting issues..."
|
|
npm run lint:js
|
|
if [ $? != 0 ]
|
|
then
|
|
echo "Please fix the JS issues before commit!"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
exit $?
|