# Makefile for Marp Slides Project .PHONY: help build dev watch pdf html clean install deploy assemble # Slide components SLIDES_DIR = slides BUILD_DIR = build HEADER = $(SLIDES_DIR)/_frontmatter.md INTRO = $(SLIDES_DIR)/_intro.md OUTRO = $(SLIDES_DIR)/_outro.md # Termin files (date-topic naming convention) TERMIN_1 = 2025-12-19-termin-1-grundlagen-text-audio TERMIN_2 = 2026-01-09-termin-2-bild-audio-video TERMIN_3 = 2026-01-23-termin-3-speichermedien-schnittstellen TERMIN_4 = 2026-01-30-termin-4-distribution-apis-zukunft TERMIN_5 = 2026-xx-xx-termin-5-vertiefung-offene-fragen TERMINS = $(TERMIN_1) $(TERMIN_2) $(TERMIN_3) $(TERMIN_4) $(TERMIN_5) # Default target help: @echo "Available commands:" @echo "" @echo " Development:" @echo " make dev - Start dev server (browse all files at localhost:1312)" @echo "" @echo " Build:" @echo " make build - Build all slides (HTML + PDF)" @echo " make pdf - Export all slides to PDF" @echo " make html - Export all slides to HTML" @echo "" @echo " Other:" @echo " make assemble - Assemble all termin files in build/" @echo " make clean - Remove generated files" @echo " make install - Install dependencies" @echo " make deploy - Deploy slides to server" # Ensure build directory exists $(BUILD_DIR)/.exists: @mkdir -p $(BUILD_DIR) @touch $@ # Assemble all termin files assemble: $(BUILD_DIR)/.exists @echo "Assembling slides..." @for f in $(TERMINS); do \ echo " $$f.md"; \ cat $(HEADER) $(INTRO) $(SLIDES_DIR)/$$f.md $(OUTRO) > $(BUILD_DIR)/$$f.md; \ done @echo " all.md" @cat $(HEADER) $(INTRO) $(foreach t,$(TERMINS),$(SLIDES_DIR)/$(t).md) $(OUTRO) > $(BUILD_DIR)/all.md @cp -r assets $(BUILD_DIR)/ 2>/dev/null || true # Development server - serves build/ with file picker dev: assemble @echo "Starting dev server..." @echo "Open: http://localhost:1312" PORT=1312 npx @marp-team/marp-cli --server $(BUILD_DIR)/ # Watch for changes watch: assemble npx @marp-team/marp-cli --watch $(BUILD_DIR)/all.md # Build all slides (HTML + PDF) build: assemble @echo "Building all slides..." @for f in $(TERMINS); do \ echo "Building $$f..."; \ npx @marp-team/marp-cli $(BUILD_DIR)/$$f.md -o $(BUILD_DIR)/$$f.html; \ npx @marp-team/marp-cli $(BUILD_DIR)/$$f.md --pdf --allow-local-files -o $(BUILD_DIR)/$$f.pdf; \ done @echo "Building all.md..." npx @marp-team/marp-cli $(BUILD_DIR)/all.md -o $(BUILD_DIR)/all.html npx @marp-team/marp-cli $(BUILD_DIR)/all.md --pdf --allow-local-files -o $(BUILD_DIR)/all.pdf # Export to PDF (all slides combined) pdf: assemble @echo "Exporting to PDF..." npx @marp-team/marp-cli $(BUILD_DIR)/all.md --pdf --allow-local-files -o $(BUILD_DIR)/all.pdf # Export to HTML (all slides combined) html: assemble @echo "Exporting to HTML..." npx @marp-team/marp-cli $(BUILD_DIR)/all.md -o $(BUILD_DIR)/all.html # Clean generated files clean: @echo "Cleaning generated files..." rm -rf $(BUILD_DIR)/ *.pdf *.html # Install dependencies install: @echo "Installing dependencies..." npm install # Deploy slides deploy: build @echo "Deploying slides..." scp $(BUILD_DIR)/all.html tengo@tuttle.uberspace.de:/home/tengo/html/malta/index.html scp -r $(BUILD_DIR)/assets/ tengo@tuttle.uberspace.de:/home/tengo/html/malta/