#!/bin/bash MKDOCS_DIR="mkdocs/docs" # Funktion für die Verarbeitung (DRY-Prinzip) process_file() { local md_file="$1" echo "Verarbeite: $md_file" local base_name=$(basename "$md_file" .md | tr ' ' '_') local dir_name=$(dirname "$md_file") local pdf_path="${dir_name}/${base_name}.pdf" local pdf_link="\n\n[PDF herunterladen](${base_name}.pdf){ .md-button }" # PDF neu erzeugen rm -f "$pdf_path" # Temp MD nur für MkDocs-Syntax bereinigen (LaTeX behalten) local temp_md="${dir_name}/temp_${base_name}.md" sed 's/{[^}]*}//g; s/^[ \t]*{[^}]*}$//gm' "$md_file" > "$temp_md" local md_dir=$(dirname "$md_file") docker run --rm \ --volume "$(pwd)":/data \ --user $(id -u):$(id -g) \ --workdir "/data/$md_dir" \ pandoc/extra \ "./temp_${base_name}.md" \ -o "./${base_name}.pdf" \ --template /data/eisvogel.latex \ --syntax-highlighting=idiomatic # Temp Datei löschen rm -f "$temp_md" echo " → PDF erstellt: $pdf_path" # PDF-Link nur einmal hinzufügen (ändert Markdown!) if ! tail -n 10 "$md_file" | grep -q "PDF herunterladen"; then echo -e "$pdf_link" >> "$md_file" echo " → PDF-Link hinzugefügt" else echo " → PDF-Link bereits vorhanden" fi echo "" } # Wenn keine Parameter → alle Dateien verarbeiten if [ $# -eq 0 ]; then echo "Keine Dateien angegeben → Verarbeite ALLE Markdown-Dateien" find "$MKDOCS_DIR" -name "*.md" | while read -r md_file; do # Überspringe index.md if [[ "$(basename "$md_file")" == "index.md" ]]; then echo "Überspringe: $md_file" continue fi process_file "$md_file" done else # Einzelne Dateien verarbeiten for param in "$@"; do md_file="$MKDOCS_DIR/$param" if [[ ! -f "$md_file" ]]; then echo "Fehler: $md_file nicht gefunden!" continue fi process_file "$md_file" done fi # **IMMER MkDocs neu bauen** (Markdown + PDF-Links ändern sich) echo "MkDocs wird neu gebaut (wegen Markdown-Änderungen)..." docker compose -f ./docker-compose.yml run --rm mkdocs build docker compose -f ./docker-compose.yml restart mkdocs echo "Fertig: mkdocs neu gebaut."