mirror of
https://github.com/jlengrand/bugsink.git
synced 2026-03-09 23:51:20 +00:00
pre-commit: fail on trailing whitespace
This commit is contained in:
16
pre-commit
16
pre-commit
@@ -14,3 +14,19 @@ if [ "$should_run" = "yes" ]; then
|
|||||||
else
|
else
|
||||||
echo "No relevant changes; skipping Tailwind build."
|
echo "No relevant changes; skipping Tailwind build."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Check for trailing whitespace in staged files, fail if found
|
||||||
|
|
||||||
|
git diff --cached --name-only --diff-filter=ACM | while IFS= read -r file; do
|
||||||
|
[ -f "$file" ] || continue
|
||||||
|
|
||||||
|
case "$file" in
|
||||||
|
*.py|*.js|*.ts|*.sh|*.md|*.txt|*.html|*.css)
|
||||||
|
if grep -qE '[[:space:]]+$' "$file"; then
|
||||||
|
echo "Commit aborted due to trailing whitespace."
|
||||||
|
echo "Fix it manually or use tools/strip-trailing-whitespace.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|||||||
30
tools/strip-trailing-whitespace.sh
Executable file
30
tools/strip-trailing-whitespace.sh
Executable file
@@ -0,0 +1,30 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Strip trailing whitespace from tracked files with specific extensions.
|
||||||
|
# Usage: ./tools/strip-trailing-whitespace.sh
|
||||||
|
# Works on macOS (BSD sed) or Linux (GNU sed), but not both at once.
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# Extensions to include
|
||||||
|
EXT_REGEX='\.(py|js|ts|sh|md|txt|html|css)$'
|
||||||
|
|
||||||
|
# Detect sed flavor
|
||||||
|
if sed --version >/dev/null 2>&1; then
|
||||||
|
SED_CMD=(sed -i -e 's/[[:space:]]\+$//')
|
||||||
|
elif sed -i '' testfile 2>/dev/null; then
|
||||||
|
SED_CMD=(sed -i '' -e 's/[[:space:]]\+$//')
|
||||||
|
else
|
||||||
|
echo "Unsupported sed version. Must be GNU sed or BSD sed (macOS)." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
git ls-files -z | while IFS= read -r -d '' file; do
|
||||||
|
[[ -f "$file" ]] || continue
|
||||||
|
[[ "$file" =~ $EXT_REGEX ]] || continue
|
||||||
|
|
||||||
|
if grep -qE '[[:space:]]+$' "$file"; then
|
||||||
|
echo "Fixing: $file"
|
||||||
|
"${SED_CMD[@]}" "$file"
|
||||||
|
fi
|
||||||
|
done
|
||||||
Reference in New Issue
Block a user