Update .husky/pre-commit
This commit is contained in:
parent
e64c4ead99
commit
49b00bd108
|
@ -1,55 +1,30 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
. "$(dirname "$0")/_/husky.sh"
|
. "$(dirname "$0")/_/husky.sh"
|
||||||
|
|
||||||
|
# Get the list of staged PHP files
|
||||||
|
STAGED_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep '\.php$')
|
||||||
|
|
||||||
|
# If there are no staged PHP files, exit
|
||||||
|
if [ -z "$STAGED_FILES" ]; then
|
||||||
|
echo "No PHP files staged for commit."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
# Function to display errors
|
# Function to display errors
|
||||||
display_errors() {
|
display_errors() {
|
||||||
local errors="$1"
|
local errors="$1"
|
||||||
echo "Errors detected:"
|
echo "Errors detected:"
|
||||||
echo "---------------------------------------"
|
echo "---------------------------------------"
|
||||||
echo "$errors"
|
echo "$errors" | while IFS='|' read -r file line error; do
|
||||||
|
printf "%-60s | %-10s | %s\n" "$file" "$line" "$error"
|
||||||
|
done
|
||||||
echo "---------------------------------------"
|
echo "---------------------------------------"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Get the list of staged files
|
# Run PHP lint to check for syntax errors
|
||||||
STAGED_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep -E '\.(php|js|css|jsx|ts|tsx)$')
|
|
||||||
|
|
||||||
# If there are no staged files, exit
|
|
||||||
if [ -z "$STAGED_FILES" ]; then
|
|
||||||
echo "No files staged for commit."
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Initialize error flags
|
|
||||||
ESLINT_ERRORS=""
|
|
||||||
PHP_ERRORS=0
|
|
||||||
|
|
||||||
# Function to run ESLint and Prettier on JavaScript files
|
|
||||||
run_js_tools() {
|
|
||||||
local files="$1"
|
|
||||||
if [ -n "$files" ]; then
|
|
||||||
echo "Running ESLint..."
|
|
||||||
for FILE in $files; do
|
|
||||||
ESLINT_OUTPUT=$(npx eslint "$FILE" 2>&1)
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
display_errors "$ESLINT_OUTPUT"
|
|
||||||
ESLINT_ERRORS=1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "Running Prettier..."
|
|
||||||
for FILE in $files; do
|
|
||||||
npx prettier --write "$FILE"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to run PHP tools
|
|
||||||
run_php_tools() {
|
|
||||||
local files="$1"
|
|
||||||
if [ -n "$files" ]; then
|
|
||||||
echo "Checking PHP syntax errors..."
|
|
||||||
SYNTAX_ERRORS=0
|
SYNTAX_ERRORS=0
|
||||||
for FILE in $files; do
|
echo "Checking PHP syntax errors..."
|
||||||
|
for FILE in $STAGED_FILES; do
|
||||||
php -l "$FILE"
|
php -l "$FILE"
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
SYNTAX_ERRORS=1
|
SYNTAX_ERRORS=1
|
||||||
|
@ -57,44 +32,29 @@ run_php_tools() {
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ $SYNTAX_ERRORS -ne 0 ]; then
|
if [ $SYNTAX_ERRORS -ne 0 ]; then
|
||||||
PHP_ERRORS=1
|
echo "Syntax errors detected. Please fix them before committing."
|
||||||
echo "Syntax errors detected in PHP files."
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Run PHPCBF to auto-fix issues
|
||||||
echo "Running PHPCBF..."
|
echo "Running PHPCBF..."
|
||||||
for FILE in $files; do
|
for FILE in $STAGED_FILES; do
|
||||||
/home/aissel/.config/composer/vendor/bin/phpcbf --standard=/var/www/html/google_forms/phpcs.xml "$FILE" || true
|
/home/aissel/.config/composer/vendor/bin/phpcbf --standard=/var/www/html/google_forms/phpcs.xml "$FILE" || true
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Run PHP CS Fixer to auto-fix issues
|
||||||
echo "Running PHP CS Fixer..."
|
echo "Running PHP CS Fixer..."
|
||||||
for FILE in $files; do
|
for FILE in $STAGED_FILES; do
|
||||||
/home/aissel/.config/composer/vendor/bin/php-cs-fixer fix "$FILE"
|
/home/aissel/.config/composer/vendor/bin/php-cs-fixer fix "$FILE"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Re-run PHPCS to check for unresolved coding standard violations
|
||||||
echo "Running PHPCS..."
|
echo "Running PHPCS..."
|
||||||
for FILE in $files; do
|
echo "$STAGED_FILES" | xargs -n 1 /home/aissel/.config/composer/vendor/bin/phpcs --standard=/var/www/html/google_forms/phpcs.xml
|
||||||
PHPCS_OUTPUT=$(/home/aissel/.config/composer/vendor/bin/phpcs --standard=/var/www/html/google_forms/phpcs.xml "$FILE" 2>&1)
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
display_errors "$PHPCS_OUTPUT"
|
|
||||||
PHP_ERRORS=1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Run tools based on file types
|
|
||||||
run_js_tools "$(echo "$STAGED_FILES" | grep -E '\.(js|jsx|ts|tsx)$')"
|
|
||||||
run_php_tools "$(echo "$STAGED_FILES" | grep '\.php$')"
|
|
||||||
|
|
||||||
# Add the fixed files back to the staging area
|
# Add the fixed files back to the staging area
|
||||||
for FILE in $STAGED_FILES; do
|
for FILE in $STAGED_FILES; do
|
||||||
git add "$FILE"
|
git add "$FILE"
|
||||||
done
|
done
|
||||||
|
|
||||||
# Exit with error code if there were any errors
|
|
||||||
if [ $PHP_ERRORS -ne 0 ] || [ $ESLINT_ERRORS -eq 1 ]; then
|
|
||||||
echo "Pre-commit checks failed. Please fix the errors before committing."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Pre-commit checks completed."
|
echo "Pre-commit checks completed."
|
||||||
|
|
Loading…
Reference in New Issue