docs site: generate landing pages for documented directories
infrastructure.md links to incidents/ the way Gitea renders directories. A static site has no directory listing, so the build now generates a small landing page (with each document's own title) for any documented directory that lacks an index. Build artifact only — no document is touched.
This commit is contained in:
1 parent
fa1f38ced2
commit
2d3291d493
1 file changed
+23
@@ -44,6 +44,29 @@ tar cf - \
|
||||
# A file that must sit at the site root (crawler rules), not under publishing/.
|
||||
cp publishing/robots.txt "$SITE_SRC/robots.txt"
|
||||
|
||||
# The documents sometimes link to a directory (`incidents/`) the way Gitea
|
||||
# renders it. A static site has no directory listing, so generate a small
|
||||
# index page for any documented subdirectory that lacks one. This is a build
|
||||
# artifact — the documents themselves are never touched.
|
||||
(cd "$SITE_SRC" && find . -mindepth 1 -type d ! -path './publishing*' | while read -r dir; do
|
||||
if compgen -G "$dir"/*.md >/dev/null && [ ! -f "$dir/index.md" ]; then
|
||||
dir_name="$(basename "$dir")"
|
||||
title="$(echo "$dir_name" | sed 's/-/ /g' | sed 's/^./\u&/')"
|
||||
{
|
||||
echo "# $title"
|
||||
echo
|
||||
echo "Landing page for this directory, generated by the publishing layer — the"
|
||||
echo "documents themselves live untouched in the repository."
|
||||
echo
|
||||
for f in "$dir"/*.md; do
|
||||
[ "$(basename "$f")" = "index.md" ] && continue
|
||||
heading="$(grep -m1 '^# ' "$f" | sed 's/^# //' || true)"
|
||||
echo "- [${heading:-$(basename "$f" .md)}]($(basename "$f"))"
|
||||
done
|
||||
} > "$dir/index.md"
|
||||
fi
|
||||
done)
|
||||
|
||||
# 2. Build.
|
||||
if [ ! -x "$VENV/bin/mkdocs" ]; then
|
||||
echo "Creating build venv at $VENV"
|
||||
|
||||
Reference in new issue
Block a user