Files

75 lines
2.0 KiB
Bash

#!/usr/bin/env bash
set -e
# LaTeX Docker Builder Entrypoint
# Unterstützt Befehle:
# build [datei.tex] (Standard: baut seminararbeit.tex oder main.tex)
# clean (Führt latexmk -C aus)
# watch [datei.tex] (Kontinuierlicher Rebuild mit latexmk -pvc)
# Beliebiger Befehl (z.B. latexmk -pdf ...)
resolve_target() {
# 1. Wenn explizit als Argument übergeben
if [ -n "$1" ]; then
echo "$1"
return
fi
# 2. Bekannte typische Hauptdateinamen prüfen
for name in seminararbeit.tex main.tex thesis.tex bachelorarbeit.tex masterarbeit.tex arbeit.tex document.tex index.tex; do
if [ -f "$name" ]; then
echo "$name"
return
fi
done
# 3. Automatische Suche nach einer .tex-Datei mit \documentclass im Verzeichnis
candidates=$(grep -l "\\\\documentclass" *.tex 2>/dev/null || true)
count=$(echo "$candidates" | grep -v '^$' | wc -l)
if [ "$count" -eq 1 ]; then
echo "$candidates"
return
fi
# Fallback: latexmk entscheidet selbst anhand von .latexmkrc oder allen tex-Dateien
echo ""
}
COMMAND="${1:-build}"
case "$COMMAND" in
build)
shift || true
TARGET=$(resolve_target "$1")
echo "==> Starte LaTeX Build..."
if [ -n "$TARGET" ]; then
echo "==> Kompiliere: $TARGET"
exec latexmk -pdf "$TARGET"
else
echo "==> Keine Hauptdatei angegeben, führe latexmk -pdf aus..."
exec latexmk -pdf
fi
;;
clean)
shift || true
echo "==> Bereinige Ausgabedateien (latexmk -C)..."
exec latexmk -C "$@"
;;
watch)
shift || true
TARGET=$(resolve_target "$1")
echo "==> Starte kontinuierlichen Watch-Modus (latexmk -pvc -view=none)..."
if [ -n "$TARGET" ]; then
exec latexmk -pvc -view=none -e '$sleep_time=1;' -pdf "$TARGET"
else
exec latexmk -pvc -view=none -e '$sleep_time=1;' -pdf
fi
;;
*)
exec "$@"
;;
esac