diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index fa5aa51..caf2df9 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -21,3 +21,12 @@ repos: language: system types: [python] require_serial: true + + # Build changed Docusaurus site(s) to catch MDX/build errors early + - id: docusaurus-build-changed-sites + name: docusaurus build (changed sites) + entry: bash scripts/docs/build-changed-sites + language: system + files: ^docs/(user|developer)/ + pass_filenames: true + require_serial: true diff --git a/scripts/docs/build-changed-sites b/scripts/docs/build-changed-sites new file mode 100644 index 0000000..4c473e2 --- /dev/null +++ b/scripts/docs/build-changed-sites @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +# Build only Docusaurus site(s) impacted by current staged file set. + +set -euo pipefail + +REPO_ROOT="$(cd "$(dirname "$0")/../.." && pwd)" +cd "$REPO_ROOT" + +build_user=false +build_developer=false + +for file in "$@"; do + case "$file" in + docs/user/*) + build_user=true + ;; + docs/developer/*) + build_developer=true + ;; + esac +done + +if [[ "$build_user" == false && "$build_developer" == false ]]; then + exit 0 +fi + +if [[ "$build_user" == true ]]; then + echo "Building user docs (docs/user)..." + ( + cd docs/user + npm run build + ) +fi + +if [[ "$build_developer" == true ]]; then + echo "Building developer docs (docs/developer)..." + ( + cd docs/developer + npm run build + ) +fi + +echo "Docusaurus build check passed for changed docs site(s)."