68 lines
2.3 KiB
Makefile
68 lines
2.3 KiB
Makefile
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."
|