Files
quartiles/.githooks/pre-commit
2026-10-26 10:06:30 -04:00

29 lines
1.0 KiB
Bash

#!/bin/sh
# 1. Regenerates game data (npm run data) and stages the generated files.
# 2. Bumps the app version (src/version.json) and stages it.
# Installed via `npm install` (scripts/install-hooks.mjs sets core.hooksPath).
# Skip with: git commit --no-verify
# or skip one step: SKIP_DATA_BUILD=1 / SKIP_VERSION_BUMP=1 git commit ...
# Nothing staged: let git report "nothing to commit" without doing any work
if git diff --cached --quiet; then
exit 0
fi
if [ -z "$SKIP_DATA_BUILD" ]; then
echo "pre-commit: regenerating game data (npm run data)..."
LOG_FILE="$(git rev-parse --git-dir)/data-build.log"
if ! npm run data > "$LOG_FILE" 2>&1; then
echo "pre-commit: npm run data failed, commit aborted. Last lines of $LOG_FILE:"
tail -n 20 "$LOG_FILE"
exit 1
fi
# Stage generated outputs (no-op for files that didn't change)
git add src/data/lexicon.js src/data/puzzles.js scripts/combo-words.txt || exit 1
fi
if [ -z "$SKIP_VERSION_BUMP" ]; then
node scripts/bump-version.mjs || exit 1
git add src/version.json || exit 1
fi