62 lines
1.3 KiB
Bash
62 lines
1.3 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
# Build the documentation site (Zensical, doc dependency group).
|
||
|
|
#
|
||
|
|
# Usage:
|
||
|
|
# scripts/ci/docs/build.sh
|
||
|
|
# scripts/ci/docs/build.sh --strict --log-file /tmp/build-log.txt
|
||
|
|
#
|
||
|
|
# Caching: use astral-sh/setup-uv with enable-cache in CI; this script only runs uv.
|
||
|
|
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
|
|
REPO_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
||
|
|
cd "$REPO_ROOT"
|
||
|
|
|
||
|
|
strict=false
|
||
|
|
log_file=""
|
||
|
|
|
||
|
|
while [[ $# -gt 0 ]]; do
|
||
|
|
case "$1" in
|
||
|
|
--strict)
|
||
|
|
strict=true
|
||
|
|
shift
|
||
|
|
;;
|
||
|
|
--log-file)
|
||
|
|
if [[ $# -lt 2 ]]; then
|
||
|
|
echo "error: --log-file requires a path" >&2
|
||
|
|
exit 2
|
||
|
|
fi
|
||
|
|
log_file="$2"
|
||
|
|
shift 2
|
||
|
|
;;
|
||
|
|
*)
|
||
|
|
echo "usage: $0 [--strict] [--log-file PATH]" >&2
|
||
|
|
exit 2
|
||
|
|
;;
|
||
|
|
esac
|
||
|
|
done
|
||
|
|
|
||
|
|
uv_sync() {
|
||
|
|
uv sync --group doc --no-editable --no-install-workspace --no-install-project
|
||
|
|
}
|
||
|
|
|
||
|
|
zensical_build() {
|
||
|
|
if [[ "$strict" == true ]]; then
|
||
|
|
uv run --no-sync zensical build --clean --strict
|
||
|
|
else
|
||
|
|
uv run --no-sync zensical build --clean
|
||
|
|
fi
|
||
|
|
}
|
||
|
|
|
||
|
|
if [[ -n "$log_file" ]]; then
|
||
|
|
set -o pipefail
|
||
|
|
mkdir -p "$(dirname "$log_file")"
|
||
|
|
: >"$log_file"
|
||
|
|
uv_sync 2>&1 | tee -a "$log_file"
|
||
|
|
zensical_build 2>&1 | tee -a "$log_file"
|
||
|
|
else
|
||
|
|
uv_sync
|
||
|
|
zensical_build
|
||
|
|
fi
|