#!/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 termin (sorted) for html in $(ls "$BUILD_DIR"/2*.html 2>/dev/null | sort); do filename=$(basename "$html") # Extract components from filename date=$(echo "$filename" | grep -oE '^[0-9]{4}-[0-9x]{2}-[0-9x]{2}') termin_num=$(echo "$filename" | grep -oE 'termin-[0-9]+' | grep -oE '[0-9]+') topic_raw=$(echo "$filename" | sed -E 's/^[0-9]{4}-[0-9x]{2}-[0-9x]{2}-termin-[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 # Format date if [[ "$date" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]] && [[ ! "$date" =~ xx ]]; then formatted_date=$(date -d "$date" "+%d. %B %Y" 2>/dev/null || echo "$date") else formatted_date="Termin folgt" fi # Handle termin number if [[ "$termin_num" == "0" ]]; then termin_label="Einführung" else termin_label="Termin $termin_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 cat >> "$BUILD_DIR/index.html" << FOOTER
QR Code

$SLIDES_URL

FOOTER echo "Generated $BUILD_DIR/index.html"