summaryrefslogtreecommitdiff
path: root/homepage-render-dev.sh
diff options
context:
space:
mode:
authorVoid Agent <void@jayrup.hermes>2026-08-07 15:28:48 +0100
committerVoid Agent <void@jayrup.hermes>2026-08-07 15:28:48 +0100
commit8b4b1532792f7c3723439c86d05a8bfa2f96ebc0 (patch)
tree3d4ed5dc56faf549834c4ca11b0cb05d1a345715 /homepage-render-dev.sh
parent6eb47fe35e01dedd42e788d9aa8f199c64962304 (diff)
blog: newest-first index listing; add homepage-render-dev.sh local preview scriptHEADmain
Diffstat (limited to 'homepage-render-dev.sh')
-rwxr-xr-xhomepage-render-dev.sh54
1 files changed, 54 insertions, 0 deletions
diff --git a/homepage-render-dev.sh b/homepage-render-dev.sh
new file mode 100755
index 0000000..d8c647b
--- /dev/null
+++ b/homepage-render-dev.sh
@@ -0,0 +1,54 @@
+#!/usr/bin/env bash
+# homepage-render-dev.sh — render jayrup.me locally WITHOUT deploying.
+#
+# Runs the same two-pass render (html + txt) as deploy-docker.sh inside the
+# pinned quarto container, writing output to public/ (gitignored). Use this to
+# preview blog posts / style changes before committing.
+#
+# Usage:
+# ./homepage-render-dev.sh [repo-dir] # default: current directory
+# QUARTO_IMAGE=<image> ./homepage-render-dev.sh # override the container image
+#
+# Notes:
+# - The default image digest MUST stay in sync with deploy-docker.sh
+# (update both deliberately when bumping quarto).
+# - On voidlaptop, docker needs the docker group: run via `sg docker` or
+# `DOCKER=(sg docker -c)` wrapper. On other machines plain docker works.
+# - public/ and .quarto/ are gitignored; nothing here touches origin.
+set -euo pipefail
+
+REPO="${1:-$(pwd)}"
+cd "$REPO"
+
+QUARTO_IMAGE="${QUARTO_IMAGE:-devxygmbh/alpine-quarto@sha256:0c0d785139b467ab75c053bc24463d2450cbf928ca8ece8d9a20dedba9568fa9}"
+
+# Inner render script — written to a temp dir and mounted read-only into the
+# container. Mirrors the logic in deploy-docker.sh; keep the two in sync.
+TMP_DIR="$(mktemp -d)"
+trap 'rm -rf "$TMP_DIR"' EXIT
+RENDER_SCRIPT="$TMP_DIR/homepage-render.sh"
+cat > "$RENDER_SCRIPT" <<'EOF'
+#!/usr/bin/env bash
+set -euo pipefail
+cd /site
+rm -rf public
+quarto render --to html
+find . -name "*.qmd" -not -path "./.*" -not -path "./public/*" | while read -r file; do
+ rel_dir=$(dirname "${file#./}")
+ base_name=$(basename "$file" .qmd)
+ quarto render "$file" --to plain --output "${base_name}.txt" --output-dir "public/$rel_dir"
+done
+EOF
+chmod +x "$RENDER_SCRIPT"
+
+echo ">> rendering with $QUARTO_IMAGE (dev, no deploy)"
+docker run --rm \
+ --entrypoint /bin/bash \
+ -u "$(id -u):$(id -g)" \
+ -e HOME=/tmp \
+ -v "$REPO":/site \
+ -v "$RENDER_SCRIPT":/render.sh:ro \
+ -w /site \
+ "$QUARTO_IMAGE" /render.sh
+
+echo ">> done — public/ is ready to preview: python3 -m http.server 8099 --directory public"