40 lines
1.5 KiB
Bash
Executable File
40 lines
1.5 KiB
Bash
Executable File
#!/bin/sh
|
|
# ---------------------------------------------------------------------------
|
|
# MSOS pre-commit hook — keeps derived files in sync automatically.
|
|
#
|
|
# On every commit it regenerates and stages:
|
|
# - the News hub grid + homepage "Latest news" (tools/build_listings.py)
|
|
# - /llms.txt and /links-for-bots/ (tools/build_botlinks.py)
|
|
# so adding a blog post or an event/project flows through to News, the homepage
|
|
# and the bot pages without any manual command.
|
|
#
|
|
# It never blocks a commit: if Python or a generator fails, it warns and lets
|
|
# the commit proceed.
|
|
#
|
|
# Activate once per clone: git config core.hooksPath tools/git-hooks
|
|
# ---------------------------------------------------------------------------
|
|
set -u
|
|
|
|
PY="$(command -v python || command -v python3 || true)"
|
|
if [ -z "$PY" ]; then
|
|
echo "pre-commit: Python not found — skipping News/bot regeneration." >&2
|
|
exit 0
|
|
fi
|
|
|
|
# Run from the repo root regardless of where git invoked the hook.
|
|
ROOT="$(git rev-parse --show-toplevel 2>/dev/null || echo .)"
|
|
cd "$ROOT" || exit 0
|
|
|
|
"$PY" tools/build_listings.py >/dev/null 2>&1 \
|
|
|| echo "pre-commit: build_listings.py failed — News/homepage not refreshed." >&2
|
|
"$PY" tools/build_botlinks.py >/dev/null 2>&1 \
|
|
|| echo "pre-commit: build_botlinks.py failed — bot pages not refreshed." >&2
|
|
|
|
# Stage only the generated outputs (no-op if unchanged).
|
|
git add -- \
|
|
en/news/index.html mk/news/index.html si/news/index.html \
|
|
en/index.html mk/index.html si/index.html \
|
|
llms.txt links-for-bots >/dev/null 2>&1 || true
|
|
|
|
exit 0
|