55 lines
1.6 KiB
Bash
Executable File
55 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# Build combined v1 + v2 MkDocs documentation for GitHub Pages.
|
|
#
|
|
# v1 docs (from the v1.x branch) are placed at the site root.
|
|
# v2 docs (from main) are placed under /v2/.
|
|
#
|
|
# Both branches are fetched fresh from origin, so the output is identical
|
|
# regardless of which branch triggered the workflow. This script is intended
|
|
# to run in CI; for local single-branch preview use `uv run mkdocs serve`.
|
|
#
|
|
# Usage:
|
|
# scripts/build-docs.sh [output-dir]
|
|
#
|
|
# Default output directory: site
|
|
#
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
OUTPUT_DIR="$(cd "$REPO_ROOT" && mkdir -p "${1:-site}" && cd "${1:-site}" && pwd)"
|
|
V1_WORKTREE="$REPO_ROOT/.worktrees/v1-docs"
|
|
V2_WORKTREE="$REPO_ROOT/.worktrees/v2-docs"
|
|
|
|
cleanup() {
|
|
cd "$REPO_ROOT"
|
|
git worktree remove --force "$V1_WORKTREE" 2>/dev/null || true
|
|
git worktree remove --force "$V2_WORKTREE" 2>/dev/null || true
|
|
rmdir "$REPO_ROOT/.worktrees" 2>/dev/null || true
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
rm -rf "${OUTPUT_DIR:?}"/*
|
|
|
|
build_branch() {
|
|
local branch="$1" worktree="$2" dest="$3"
|
|
|
|
echo "=== Building docs for ${branch} ==="
|
|
git fetch origin "$branch"
|
|
git worktree remove --force "$worktree" 2>/dev/null || true
|
|
rm -rf "$worktree"
|
|
git worktree add --detach "$worktree" "origin/${branch}"
|
|
|
|
(
|
|
cd "$worktree"
|
|
uv sync --frozen --group docs
|
|
uv run --frozen --no-sync mkdocs build --site-dir "$dest"
|
|
)
|
|
}
|
|
|
|
build_branch v1.x "$V1_WORKTREE" "$OUTPUT_DIR"
|
|
build_branch main "$V2_WORKTREE" "$OUTPUT_DIR/v2"
|
|
|
|
echo "=== Combined docs built at $OUTPUT_DIR ==="
|