init
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
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."
|
||||
Reference in New Issue
Block a user