diff --git a/.githooks/pre-commit b/.githooks/pre-commit index 6e842f0..dd7ea82 100755 --- a/.githooks/pre-commit +++ b/.githooks/pre-commit @@ -1,19 +1,15 @@ #!/usr/bin/env bash -# Pre-commit hook: enforce 777-line limit on JS files +# Pre-commit hook: enforce 10-line net addition limit # Install: git config core.hooksPath .githooks -FAIL=0 -for f in $(git diff --cached --name-only --diff-filter=ACM | grep '\.js$' | grep -v node_modules | grep -v tests/); do - LINES=$(wc -l < "$f" | tr -d ' ') - if [ "$LINES" -gt 777 ]; then - echo "BLOCKED: $f is $LINES lines (max: 777)" - echo " Extract into a module. app.js is a thin wrapper." - FAIL=1 - fi -done +ADDITIONS=$(git diff --cached --numstat | awk '{s+=$1} END {print s+0}') +DELETIONS=$(git diff --cached --numstat | awk '{s+=$2} END {print s+0}') +NET=$((ADDITIONS - DELETIONS)) -if [ $FAIL -eq 1 ]; then - echo "" - echo "No JS file may exceed 777 lines. Break it up." +if [ "$NET" -gt 10 ]; then + echo "BLOCKED: Net addition is $NET lines (max: 10)." + echo " Delete code elsewhere to compensate." exit 1 fi + +echo "✓ Pre-commit: net $NET lines (limit: 10)"