From a23f681332fd79b529d1139d99227bc30a1fe327 Mon Sep 17 00:00:00 2001 From: Adrien Crivelli Date: Thu, 5 Jan 2017 01:29:29 +0900 Subject: [PATCH] Add pre-commit git hook to check code style The hook automatically fixes most code style mistakes and should be installed once with: ```sh ln -s ../../bin/pre-commit .git/hooks/pre-commit ``` --- bin/pre-commit | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100755 bin/pre-commit diff --git a/bin/pre-commit b/bin/pre-commit new file mode 100755 index 00000000..8d93f8ab --- /dev/null +++ b/bin/pre-commit @@ -0,0 +1,33 @@ +#!/bin/bash + +pass=true + +files=$(git diff --cached --name-only --diff-filter=ACMR | grep -E '\.(php|phtml)$') +if [ "$files" != "" ]; then + + # Run php syntax check before commit + while read -r file; do + php -l "$file" + if [ $? -ne 0 ]; then + pass=false + fi + done <<< "$files" + + # Run php-cs-fixer validation before commit + echo "$files" | xargs ./vendor/bin/php-cs-fixer fix --diff --config .php_cs.dist + if [ $? -ne 0 ]; then + pass=false + fi + + # Automatically add files that may have been fixed by php-cs-fixer + echo "$files" | xargs git add +fi + +if $pass; then + exit 0 +else + echo "" + echo "PRE-COMMIT HOOK FAILED:" + echo "Code style validation failed. Please fix errors and try committing again." + exit 1 +fi