2273009b95
Create nova-sp-theme.css — S&P Global Energy Marp theme (Red/Black/White palette applied to all slide chrome: backgrounds, headers/footers, pagination, tables, blockquotes, code blocks). Create render_slides.sh — end-to-end pipeline: mermaid PNGs + Marp HTML/PPTX. Create slides.yml CI workflow — auto-renders on docs/presentations/ changes. Create test_slides_pipeline.py — 12 tests (theme CSS, Marp frontmatter, script, workflow, .mmd/.png parity, README retired-deck cleanup). Update Marp frontmatter: theme: nova-sp + footer v1.20. Fix presentations/README.md directory layout (remove retired decks). Re-render HTML + PPTX with S&P theme. ---ci--- project: acdl phase: 2 milestone: v1.20 status: execute requirements: [REQ-239, REQ-240, REQ-241, REQ-242, REQ-243] ---/ci---
77 lines
2.7 KiB
Bash
Executable File
77 lines
2.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# scripts/render_slides.sh — render the Nova presentation deck end-to-end:
|
|
# 1. Mermaid .mmd → .png (S&P-themed via sp-theme.json)
|
|
# 2. Marp .md → .html + .pptx (S&P-themed via nova-sp-theme.css)
|
|
# 3. Stage all rendered artifacts to git.
|
|
#
|
|
# Usage:
|
|
# bash scripts/render_slides.sh [deck-name]
|
|
# bash scripts/render_slides.sh nova-no-humans-platform
|
|
#
|
|
# If no deck name is given, defaults to nova-no-humans-platform.
|
|
set -euo pipefail
|
|
|
|
DECK="${1:-nova-no-humans-platform}"
|
|
cd "$(git rev-parse --show-toplevel)"
|
|
|
|
MMD_DIR="docs/presentations/assets/mmd"
|
|
PNG_DIR="docs/presentations/assets/png"
|
|
THEME_JSON="$MMD_DIR/sp-theme.json"
|
|
THEME_CSS="docs/presentations/assets/nova-sp-theme.css"
|
|
PUPPETEER_CFG="docs/presentations/assets/puppeteer-config.json"
|
|
SRC="docs/presentations/${DECK}-marp.md"
|
|
HTML="docs/presentations/${DECK}.html"
|
|
PPTX="docs/presentations/${DECK}.pptx"
|
|
|
|
[ -f "$SRC" ] || { echo "ERROR: source deck $SRC not found" >&2; exit 1; }
|
|
[ -f "$THEME_CSS" ] || { echo "ERROR: theme CSS $THEME_CSS not found" >&2; exit 1; }
|
|
|
|
# --- Chrome / Chromium discovery ---
|
|
CHROME=""
|
|
for c in \
|
|
/root/.cache/ms-playwright/chromium-1217/chrome-linux64/chrome \
|
|
/usr/bin/chromium \
|
|
/usr/bin/chromium-browser \
|
|
/usr/bin/google-chrome; do
|
|
if [ -x "$c" ]; then CHROME="$c"; break; fi
|
|
done
|
|
if [ -z "$CHROME" ]; then
|
|
echo "WARNING: no Chrome/Chromium found — skipping render" >&2
|
|
exit 0
|
|
fi
|
|
export CHROME_PATH="$CHROME"
|
|
|
|
# --- Step 1: render mermaid diagrams (S&P-themed) ---
|
|
echo "=== Step 1: Rendering mermaid diagrams (S&P theme: $THEME_JSON) ==="
|
|
if [ -d "$MMD_DIR" ]; then
|
|
for mmd in "$MMD_DIR"/*.mmd; do
|
|
name="$(basename "$mmd" .mmd)"
|
|
png="$PNG_DIR/$name.png"
|
|
echo " $name.mmd → $name.png"
|
|
npx --yes @mermaid-js/mermaid-cli \
|
|
--configFile "$THEME_JSON" \
|
|
--puppeteerConfigFile "$PUPPETEER_CFG" \
|
|
--input "$mmd" \
|
|
--output "$png" 2>&1 | grep -v "^$" || true
|
|
done
|
|
echo " Rendered $(ls "$PNG_DIR"/*.png 2>/dev/null | wc -l) PNGs."
|
|
else
|
|
echo " No .mmd directory — skipping mermaid render."
|
|
fi
|
|
echo ""
|
|
|
|
# --- Step 2: render Marp deck (S&P-themed) ---
|
|
echo "=== Step 2: Rendering Marp deck → HTML + PPTX ==="
|
|
echo " Theme: $THEME_CSS"
|
|
echo " HTML → $HTML"
|
|
npx --yes @marp-team/marp-cli@latest --allow-local-files --theme "$THEME_CSS" "$SRC" -o "$HTML" 2>&1 | tail -3
|
|
|
|
echo " PPTX → $PPTX"
|
|
npx --yes @marp-team/marp-cli@latest --allow-local-files --theme "$THEME_CSS" "$SRC" -o "$PPTX" 2>&1 | tail -3
|
|
echo ""
|
|
|
|
# --- Step 3: stage ---
|
|
echo "=== Step 3: Staging rendered artifacts ==="
|
|
git add "$PNG_DIR"/*.png "$HTML" "$PPTX" 2>/dev/null || true
|
|
echo "=== Done: staged $(ls "$PNG_DIR"/*.png 2>/dev/null | wc -l) PNGs + $HTML + $PPTX ==="
|