Files
PhpSpreadsheet/bin/pre-commit
T
Adrien Crivelli bb6ae9ce7d Prevent adding PHPDoc types instead of native types
PHPDoc types can sometimes be entirely expressed as PHP native types. It
is better because it avoids code duplication and enables type runtime
check.

This will help us slowly migrate away from PHPDoc typing to PHP native typing.
2023-09-13 10:06:58 +08:00

40 lines
885 B
Bash
Executable File

#!/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-fixer.dist.php
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
# Check PHPDoc types
./bin/check-phpdoc-types
if [ $? -ne 0 ]; then
pass=false
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