Files
clash-verge-rev/.husky/pre-commit
2025-10-07 18:28:32 +08:00

46 lines
1.5 KiB
Bash
Executable File

#!/bin/bash
# Run lint-staged to handle formatting and linting for JS/TS files
# This handles prettier and eslint --fix automatically
npx lint-staged
# Check for any remaining linting errors in JS/TS files that weren't fixed automatically
# Only run this if JS/TS files are staged (lint-staged already handled these)
JS_FILES=$(git diff --cached --name-only | grep -E '\.(ts|tsx|js|jsx)' || true)
if [ -n "$JS_FILES" ]; then
echo "Verifying no remaining linting issues in staged files..."
# Use --max-warnings 0 to ensure no warnings either
if ! pnpm lint:staged --max-warnings 0; then
echo "ESLint found unfixable issues or warnings in staged files. Please fix them before committing."
echo "Files affected: $JS_FILES"
exit 1
fi
fi
# Check for staged Rust files and handle them
RUST_FILES=$(git diff --cached --name-only | grep -E '^src-tauri/.*\.(rs)$' || true)
if [ -n "$RUST_FILES" ]; then
echo "Running rustfmt and clippy on staged Rust files..."
cd src-tauri || exit
# Auto-format Rust code
cargo fmt
# Check if there are still formatting issues after auto-formatting
if ! cargo fmt -- --check; then
echo "rustfmt still found formatting issues after auto-formatting."
cd ..
exit 1
fi
# Run clippy for linting
if ! cargo clippy; then
echo "clippy found issues. Please fix them before committing."
cd ..
exit 1
fi
cd ..
fi
# Allow commit
exit 0