Compare commits

...

1 Commits

Author SHA1 Message Date
RameshT 49b00bd108 Update .husky/pre-commit 2024-08-08 11:30:15 +00:00
1 changed files with 37 additions and 77 deletions

View File

@ -1,100 +1,60 @@
#!/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)$') SYNTAX_ERRORS=0
echo "Checking PHP syntax errors..."
# If there are no staged files, exit for FILE in $STAGED_FILES; do
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
for FILE in $files; do
php -l "$FILE" php -l "$FILE"
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
SYNTAX_ERRORS=1 SYNTAX_ERRORS=1
fi fi
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
echo "Running PHPCBF..." # Run PHPCBF to auto-fix issues
for FILE in $files; do 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 /home/aissel/.config/composer/vendor/bin/phpcbf --standard=/var/www/html/google_forms/phpcs.xml "$FILE" || true
done done
echo "Running PHP CS Fixer..." # Run PHP CS Fixer to auto-fix issues
for FILE in $files; do echo "Running PHP CS Fixer..."
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
echo "Running PHPCS..." # Re-run PHPCS to check for unresolved coding standard violations
for FILE in $files; do echo "Running PHPCS..."
PHPCS_OUTPUT=$(/home/aissel/.config/composer/vendor/bin/phpcs --standard=/var/www/html/google_forms/phpcs.xml "$FILE" 2>&1) echo "$STAGED_FILES" | xargs -n 1 /home/aissel/.config/composer/vendor/bin/phpcs --standard=/var/www/html/google_forms/phpcs.xml
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."