Files
jabali-panel/.githooks/pre-commit
2026-01-24 19:36:46 +02:00

59 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
# Pre-commit hook for Jabali
# To enable: git config core.hooksPath .githooks
set -e
echo "Running pre-commit checks..."
# Get staged PHP files
STAGED_PHP=$(git diff --cached --name-only --diff-filter=ACMR | grep '\.php$' || true)
if [ -n "$STAGED_PHP" ]; then
echo "Checking PHP syntax..."
for FILE in $STAGED_PHP; do
if [ -f "$FILE" ]; then
php -l "$FILE" > /dev/null 2>&1 || {
echo "Syntax error in $FILE"
exit 1
}
fi
done
echo "PHP syntax OK"
# Run Pint on staged files only
if [ -f "./vendor/bin/pint" ]; then
echo "Running Laravel Pint..."
./vendor/bin/pint --test $STAGED_PHP || {
echo ""
echo "Code style issues found. Run 'make fix' to auto-fix."
exit 1
}
echo "Code style OK"
fi
fi
# Check for debug statements
DEBUG_PATTERNS="dd(|dump(|var_dump(|print_r(|ray(|Log::debug("
if git diff --cached --diff-filter=ACMR | grep -E "$DEBUG_PATTERNS" > /dev/null 2>&1; then
echo ""
echo "WARNING: Debug statements found in staged changes:"
git diff --cached --diff-filter=ACMR | grep -n -E "$DEBUG_PATTERNS" | head -10
echo ""
read -p "Continue anyway? (y/N) " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
exit 1
fi
fi
# Check for hardcoded credentials patterns
CREDENTIAL_PATTERNS="password.*=.*['\"][^'\"]+['\"]|api_key.*=.*['\"][^'\"]+['\"]|secret.*=.*['\"][^'\"]+['\"]"
if git diff --cached --diff-filter=ACMR | grep -iE "$CREDENTIAL_PATTERNS" > /dev/null 2>&1; then
echo ""
echo "WARNING: Possible hardcoded credentials detected!"
echo "Please review the staged changes carefully."
fi
echo "Pre-commit checks passed!"