Files
223015c/Makefile
Michael Czechowski 6457401ec2 add turing slides and fix image optimization workflow
- add alan turing slides (biography, enigma, turing machine)
- add ibm holocaust book cover to ns-deutschland slide
- rename nazi-deutschland to ns-deutschland
- fix makefile: optimize-images now reads from assets-original
- add new images: alan-turing.jpg, IBM book cover
2025-12-19 22:53:42 +01:00

120 lines
4.2 KiB
Makefile

# Makefile for Marp Slides Project
.PHONY: help build dev watch pdf html clean install deploy deploy-html copy-assets optimize-images
# Directories
SLIDES_DIR = slides
BUILD_DIR = build
# Termin files (date-topic naming convention) - each is self-contained
TERMIN_1 = 2025-12-20-termin-1-geschichte-grundlagen-html
TERMIN_2 = 2026-01-10-termin-2-netzwerke-protokolle-css
TERMIN_3 = 2026-01-24-termin-3-interaktivitaet-javascript
TERMINS = $(TERMIN_1) $(TERMIN_2) $(TERMIN_3)
# 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 " Deploy:"
@echo " make deploy - Full build + deploy (HTML, PDF, assets)"
@echo " make deploy-html - HTML only deploy (faster)"
@echo ""
@echo " Other:"
@echo " make optimize-images - Resize images to max 1920px"
@echo " make clean - Remove generated files"
@echo " make install - Install dependencies"
# Ensure build directory exists
$(BUILD_DIR)/.exists:
@mkdir -p $(BUILD_DIR)
@touch $@
# Copy assets and materials to build directory
copy-assets: $(BUILD_DIR)/.exists
@echo "Copying assets..."
@cp -r $(SLIDES_DIR)/assets $(BUILD_DIR)/
@cp -r $(SLIDES_DIR)/materials $(BUILD_DIR)/ 2>/dev/null || true
# Development server - serves slides/ directly with HMR
dev:
@echo "Starting dev server with HMR..."
@echo "Open: http://localhost:1312"
PORT=1312 npx @marp-team/marp-cli --server $(SLIDES_DIR)/
# Watch for changes
watch:
npx @marp-team/marp-cli --watch $(SLIDES_DIR)/
# Build all slides (HTML + PDF)
build: copy-assets
@echo "Building all slides..."
@for f in $(TERMINS); do \
echo "Building $$f..."; \
npx @marp-team/marp-cli $(SLIDES_DIR)/$$f.md -o $(BUILD_DIR)/$$f.html; \
npx @marp-team/marp-cli $(SLIDES_DIR)/$$f.md --pdf --allow-local-files -o $(BUILD_DIR)/$$f.pdf; \
done
@./scripts/generate-index.sh $(BUILD_DIR)
@echo "Done! Output in $(BUILD_DIR)/"
# Export all slides to PDF
pdf: $(BUILD_DIR)/.exists
@echo "Exporting to PDF..."
@for f in $(TERMINS); do \
echo " $$f.pdf"; \
npx @marp-team/marp-cli $(SLIDES_DIR)/$$f.md --pdf --allow-local-files -o $(BUILD_DIR)/$$f.pdf; \
done
@echo "Done! PDFs in $(BUILD_DIR)/"
# Export all slides to HTML
html: copy-assets
@echo "Exporting to HTML..."
@for f in $(TERMINS); do \
echo " $$f.html"; \
npx @marp-team/marp-cli $(SLIDES_DIR)/$$f.md -o $(BUILD_DIR)/$$f.html; \
done
@./scripts/generate-index.sh $(BUILD_DIR)
@echo "Done! HTML files in $(BUILD_DIR)/"
# Clean generated files
clean:
@echo "Cleaning generated files..."
rm -rf $(BUILD_DIR)/ *.pdf *.html
# Install dependencies
install:
@echo "Installing dependencies..."
npm install
# Optimize images (resize to max 1920px, requires nix-shell -p imagemagick)
optimize-images:
@echo "Creating optimized images from assets-original..."
@mkdir -p $(SLIDES_DIR)/assets
@nix-shell -p imagemagick --run 'find $(SLIDES_DIR)/assets-original -maxdepth 1 -type f \( -name "*.png" -o -name "*.jpg" -o -name "*.jpeg" -o -name "*.webp" -o -name "*.avif" \) -exec sh -c '"'"'for img; do magick "$$img" -resize "1920x>" -quality 85 "$(SLIDES_DIR)/assets/$$(basename "$$img")"; done'"'"' _ {} +'
@echo "Done! Optimized images in assets/"
# Deploy slides (full build)
deploy: build
@echo "Deploying slides..."
@echo "Copying HTML files..."
scp $(BUILD_DIR)/*.html tengo@tuttle.uberspace.de:/home/tengo/html/hdm/223015c/
@echo "Copying assets..."
scp -r $(BUILD_DIR)/assets/ tengo@tuttle.uberspace.de:/home/tengo/html/hdm/223015c/
@echo "Copying materials..."
scp -r $(BUILD_DIR)/materials/ tengo@tuttle.uberspace.de:/home/tengo/html/hdm/223015c/ 2>/dev/null || true
# Deploy HTML only (faster, no PDF rebuild)
deploy-html: html
@echo "Deploying HTML only..."
scp $(BUILD_DIR)/*.html tengo@tuttle.uberspace.de:/home/tengo/html/hdm/223015c/
scp -r $(BUILD_DIR)/assets/ tengo@tuttle.uberspace.de:/home/tengo/html/hdm/223015c/
scp -r $(BUILD_DIR)/materials/ tengo@tuttle.uberspace.de:/home/tengo/html/hdm/223015c/ 2>/dev/null || true