From 49b00bd10831da45e7846840d147c84addf747c8 Mon Sep 17 00:00:00 2001 From: RameshT Date: Thu, 8 Aug 2024 11:30:15 +0000 Subject: [PATCH] Update .husky/pre-commit --- .husky/pre-commit | 114 +++++++++++++++------------------------------- 1 file changed, 37 insertions(+), 77 deletions(-) diff --git a/.husky/pre-commit b/.husky/pre-commit index 5f14208..bb580de 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,100 +1,60 @@ #!/bin/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 display_errors() { local errors="$1" echo "Errors detected:" echo "---------------------------------------" - echo "$errors" + echo "$errors" | while IFS='|' read -r file line error; do + printf "%-60s | %-10s | %s\n" "$file" "$line" "$error" + done echo "---------------------------------------" } -# Get the list of staged files -STAGED_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep -E '\.(php|js|css|jsx|ts|tsx)$') +# Run PHP lint to check for syntax errors +SYNTAX_ERRORS=0 +echo "Checking PHP syntax errors..." +for FILE in $STAGED_FILES; do + php -l "$FILE" + if [ $? -ne 0 ]; then + SYNTAX_ERRORS=1 + fi +done -# If there are no staged files, exit -if [ -z "$STAGED_FILES" ]; then - echo "No files staged for commit." - exit 0 +if [ $SYNTAX_ERRORS -ne 0 ]; then + echo "Syntax errors detected. Please fix them before committing." + exit 1 fi -# Initialize error flags -ESLINT_ERRORS="" -PHP_ERRORS=0 +# Run PHPCBF to auto-fix issues +echo "Running PHPCBF..." +for FILE in $STAGED_FILES; do + /home/aissel/.config/composer/vendor/bin/phpcbf --standard=/var/www/html/google_forms/phpcs.xml "$FILE" || true +done -# 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 +# Run PHP CS Fixer to auto-fix issues +echo "Running PHP CS Fixer..." +for FILE in $STAGED_FILES; do + /home/aissel/.config/composer/vendor/bin/php-cs-fixer fix "$FILE" +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 - for FILE in $files; do - php -l "$FILE" - if [ $? -ne 0 ]; then - SYNTAX_ERRORS=1 - fi - done - - if [ $SYNTAX_ERRORS -ne 0 ]; then - PHP_ERRORS=1 - echo "Syntax errors detected in PHP files." - fi - - echo "Running PHPCBF..." - for FILE in $files; do - /home/aissel/.config/composer/vendor/bin/phpcbf --standard=/var/www/html/google_forms/phpcs.xml "$FILE" || true - done - - echo "Running PHP CS Fixer..." - for FILE in $files; do - /home/aissel/.config/composer/vendor/bin/php-cs-fixer fix "$FILE" - done - - echo "Running PHPCS..." - for FILE in $files; do - 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$')" +# Re-run PHPCS to check for unresolved coding standard violations +echo "Running PHPCS..." +echo "$STAGED_FILES" | xargs -n 1 /home/aissel/.config/composer/vendor/bin/phpcs --standard=/var/www/html/google_forms/phpcs.xml # Add the fixed files back to the staging area for FILE in $STAGED_FILES; do git add "$FILE" 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."