#!/usr/bin/env bash # Generate index.html for slide overview # Usage: ./generate-index.sh COURSE="${1:-223015b}" BUILD_DIR="${2:-build/$COURSE}" # Course-specific configuration case "$COURSE" in 223015b) TITLE="Dateiformate, Schnittstellen, Speichermedien & Distributionswege" SUBTITLE="223015b · Modul \"Technik 1\" · 1. Semester" SLIDES_URL="https://librete.ch/hdm/223015b" ACCENT_COLOR="#1e5f8a" ACCENT_LIGHT="#e8f4fc" ;; 223015c) TITLE="Grundlagen IT- und Internettechnik" SUBTITLE="223015c · Modul \"Technik 1\" · 1. Semester" SLIDES_URL="https://librete.ch/hdm/223015c" ACCENT_COLOR="#d63384" ACCENT_LIGHT="#fce4ec" ;; *) TITLE="$COURSE - HdM Slides" SUBTITLE="Lecture Slides" SLIDES_URL="https://librete.ch/hdm/$COURSE" ACCENT_COLOR="#0066cc" ACCENT_LIGHT="#e8f4fc" ;; esac # Topic mappings for nice German titles declare -A TOPIC_MAP TOPIC_MAP["intro"]="Einführung" TOPIC_MAP["grundlagen-text-audio"]="Grundlagen, Text & Audio" TOPIC_MAP["bild-audio-video"]="Bild, Audio & Video" TOPIC_MAP["speichermedien-schnittstellen"]="Speichermedien & Schnittstellen" TOPIC_MAP["distribution-apis-zukunft"]="Distribution, APIs & Zukunft" TOPIC_MAP["vertiefung-offene-fragen"]="Vertiefung & Offene Fragen" TOPIC_MAP["geschichte-grundlagen-html"]="Geschichte, Grundlagen & HTML" TOPIC_MAP["netzwerke-protokolle-css"]="Netzwerke, Protokolle & CSS" TOPIC_MAP["interaktivitaet-javascript"]="Interaktivität & JavaScript" cat > "$BUILD_DIR/index.html" << HEADER $TITLE

$TITLE

$SUBTITLE

HdM Stuttgart · Wintersemester 2025/26 · Michael Czechowski

HEADER # Generate links for each kapitel (sorted) for html in $(ls "$BUILD_DIR"/[0-9][0-9]-*.html 2>/dev/null | sort); do filename=$(basename "$html") # Extract components from filename (format: NN-topic.html) kapitel_num=$(echo "$filename" | grep -oE '^[0-9]+' | sed 's/^0*//') topic_raw=$(echo "$filename" | sed -E 's/^[0-9]+-//' | sed 's/\.html$//') # Look up nice topic name or fallback topic="${TOPIC_MAP[$topic_raw]}" if [[ -z "$topic" ]]; then topic=$(echo "$topic_raw" | sed 's/-/ /g' | sed 's/.*/\u&/') fi # Handle kapitel number if [[ "$kapitel_num" == "0" ]] || [[ -z "$kapitel_num" ]]; then kapitel_label="Einführung" else kapitel_label="Kapitel $kapitel_num" fi pdf_filename="${filename%.html}.pdf" # Check if PDF exists pdf_link="" if [[ -f "$BUILD_DIR/$pdf_filename" ]]; then pdf_link="PDF" fi cat >> "$BUILD_DIR/index.html" << LINK LINK done # Add klausur entry if it exists if [[ -f "$BUILD_DIR/klausur.html" ]]; then pdf_link="" if [[ -f "$BUILD_DIR/klausur.pdf" ]]; then pdf_link="PDF" fi cat >> "$BUILD_DIR/index.html" << KLAUSUR KLAUSUR fi cat >> "$BUILD_DIR/index.html" << FOOTER
QR Code

$SLIDES_URL

FOOTER echo "Generated $BUILD_DIR/index.html"