export PATH := /Library/TeX/texbin:$(PATH)

TEMPLATE     := templates/sm-template.tex
DEFAULTS     := templates/sm-defaults.yaml
FILENAME_TPL := templates/filename.tpl
META_FILE    ?= abgaben/metadata.yaml
PANDOC       := pandoc

ABS_TEMPLATE     := $(abspath $(TEMPLATE))
ABS_DEFAULTS     := $(abspath $(DEFAULTS))
ABS_META         := $(abspath $(META_FILE))
ABS_FILENAME_TPL := $(abspath $(FILENAME_TPL))

SOURCES := $(shell find abgaben -name "*.md" 2>/dev/null)

.PHONY: all render clean help

# -- Alle Abgaben -------------------------------------------------------------

all:
	@for src in $(SOURCES); do \
		$(MAKE) --no-print-directory render FILE=$$src || exit 1; \
	done

# -- Einzeldatei (VSCode-Task / manuell) --------------------------------------
# PDF-Dateiname wird aus den Metadaten ermittelt: Gruppe0_SM-1b_Vorbereitung.pdf
# Aufruf: make render FILE=abgaben/irgendwas.md

render:
ifndef FILE
	$(error Bitte FILE angeben: make render FILE=abgaben/datei.md)
endif
	$(eval SRCDIR  := $(dir $(abspath $(FILE))))
	$(eval OUTNAME := $(shell $(PANDOC) \
		--template=$(ABS_FILENAME_TPL) \
		--metadata-file=$(ABS_META) \
		-t plain "$(FILE)" 2>/dev/null | tr -d '\n\r'))
	@if [ -z "$(OUTNAME)" ]; then \
		echo "FEHLER: PDF-Name konnte nicht aus Metadaten ermittelt werden."; \
		echo "  Pflichtfelder in Frontmatter: gruppe, aufgabenkennung"; \
		exit 1; \
	fi
	@echo "Baue $(FILE) --> $(SRCDIR)$(OUTNAME)..."
	cd "$(SRCDIR)" && $(PANDOC) "$(notdir $(FILE))" \
		--defaults=$(ABS_DEFAULTS) \
		--template=$(ABS_TEMPLATE) \
		--metadata-file=$(ABS_META) \
		-o "$(OUTNAME)"
	@echo "  => $(SRCDIR)$(OUTNAME)"

# -- Aufraeumen ---------------------------------------------------------------

clean:
	find abgaben -name "*.pdf" -delete 2>/dev/null; true
	@echo "PDFs geloescht."

# -- Hilfe --------------------------------------------------------------------

help:
	@echo "Verwendung:"
	@echo "  make                                   Alle Abgaben bauen"
	@echo "  make render FILE=abgaben/<datei>.md    Einzelne Datei rendern"
	@echo "  make META_FILE=abgaben/x.yaml ...      Andere Metadaten-Datei"
	@echo "  make clean                             Alle PDFs loeschen"
	@echo ""
	@echo "PDF-Name aus Metadaten: Gruppe0_SM-1b_Vorbereitung.pdf"
	@echo "VSCode: Cmd+Shift+B rendert die aktuell geoeffnete Datei."
