43 lines
1.4 KiB
Bash
Executable File
43 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Pre-commit hook: regenerate the Docusaurus tool/resource reference when
|
|
# any tool/resource module is part of the commit. Installed by
|
|
# tools/install-hooks.sh; opt-in (devs without the hook see no behavior change).
|
|
# To bypass for a single commit: git commit --no-verify
|
|
|
|
set -e
|
|
|
|
REPO_ROOT="$(git rev-parse --show-toplevel)"
|
|
GENERATOR="${REPO_ROOT}/tools/generate_docs_reference.py"
|
|
|
|
if [[ ! -f "$GENERATOR" ]]; then
|
|
echo "pre-commit: $GENERATOR missing; skipping docs regeneration." >&2
|
|
exit 0
|
|
fi
|
|
|
|
relevant_paths='^Server/src/services/(tools|resources|registry)/'
|
|
|
|
# Look at the staged change set only — exclude pure deletions.
|
|
staged=$(git diff --cached --name-only --diff-filter=ACMR)
|
|
|
|
if ! grep -qE "$relevant_paths" <<<"$staged"; then
|
|
exit 0
|
|
fi
|
|
|
|
echo "pre-commit: tool/resource module changes detected — regenerating /website/docs/reference/"
|
|
|
|
# Prefer uv if available (matches how the Server's deps are pinned). Fall back
|
|
# to system python — the generator handles its own sys.path setup.
|
|
if command -v uv >/dev/null 2>&1 && [[ -f "${REPO_ROOT}/Server/pyproject.toml" ]]; then
|
|
(cd "${REPO_ROOT}/Server" && uv run python "$GENERATOR")
|
|
else
|
|
python3 "$GENERATOR"
|
|
fi
|
|
|
|
# Stage any reference files that changed so the commit captures them.
|
|
if ! git diff --quiet -- "website/docs/reference"; then
|
|
echo "pre-commit: staging regenerated reference pages."
|
|
git add website/docs/reference
|
|
fi
|
|
|
|
exit 0
|