-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgenerate.sh
More file actions
47 lines (36 loc) · 925 Bytes
/
generate.sh
File metadata and controls
47 lines (36 loc) · 925 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/usr/bin/env sh
set -eu
if [ $# -ne 1 ]; then
echo "usage: $0 <path-to-rust-crate>"
exit 1
fi
SOURCE_REPO=$(cd "$1" && pwd)
DOCS_ROOT=$(pwd)
# Infer crate name from Cargo metadata
PROJECT=$(
cd "$SOURCE_REPO" &&
cargo metadata --no-deps --format-version 1 \
| jq -r '.packages[0].name'
)
OUT="$DOCS_ROOT/$PROJECT"
TMP_TARGET="$(mktemp -d)"
export RUSTDOCFLAGS="--html-in-header $DOCS_ROOT/katex-header.html"
# 1. Build docs via cargo
(
cd "$SOURCE_REPO"
cargo doc --no-deps --document-private-items --target-dir "$TMP_TARGET"
)
# 2. Replace generated docs
rm -rf "$OUT"
mkdir -p "$OUT"
# Copy full rustdoc site (themes, JS, CSS)
cp -r "$TMP_TARGET/doc/"* "$OUT/"
# 3. Root redirect
cat > "$OUT/index.html" <<EOF
<!doctype html>
<meta http-equiv="refresh" content="0; url=./$PROJECT/">
<title>$PROJECT documentation</title>
EOF
# 4. Cleanup
rm -rf "$TMP_TARGET"
echo "Generated docs for $PROJECT"