add makefile improvements and index generator
- add deploy-html, optimize-images, copy-assets targets - add scripts/generate-index.sh for slide overview - integrate index generation into html/build targets - deploy to 223015c path 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,21 +1,16 @@
|
||||
# Makefile for Marp Slides Project
|
||||
|
||||
.PHONY: help build dev watch pdf html clean install deploy assemble
|
||||
.PHONY: help build dev watch pdf html clean install deploy deploy-html copy-assets optimize-images
|
||||
|
||||
# Slide components
|
||||
# Directories
|
||||
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)
|
||||
# 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:
|
||||
@@ -29,27 +24,25 @@ help:
|
||||
@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 assemble - Assemble all termin files in build/"
|
||||
@echo " make optimize-images - Resize images to max 1920px"
|
||||
@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 $(SLIDES_DIR)/assets $(BUILD_DIR)/ 2>/dev/null || true
|
||||
# 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:
|
||||
@@ -58,30 +51,38 @@ dev:
|
||||
PORT=1312 npx @marp-team/marp-cli --server $(SLIDES_DIR)/
|
||||
|
||||
# Watch for changes
|
||||
watch: assemble
|
||||
npx @marp-team/marp-cli --watch $(BUILD_DIR)/all.md
|
||||
watch:
|
||||
npx @marp-team/marp-cli --watch $(SLIDES_DIR)/
|
||||
|
||||
# Build all slides (HTML + PDF)
|
||||
build: assemble
|
||||
build: copy-assets
|
||||
@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; \
|
||||
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
|
||||
@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
|
||||
@./scripts/generate-index.sh $(BUILD_DIR)
|
||||
@echo "Done! Output in $(BUILD_DIR)/"
|
||||
|
||||
# Export to PDF (all slides combined)
|
||||
pdf: assemble
|
||||
# Export all slides to PDF
|
||||
pdf: $(BUILD_DIR)/.exists
|
||||
@echo "Exporting to PDF..."
|
||||
npx @marp-team/marp-cli $(BUILD_DIR)/all.md --pdf --allow-local-files -o $(BUILD_DIR)/all.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 to HTML (all slides combined)
|
||||
html: assemble
|
||||
# Export all slides to HTML
|
||||
html: copy-assets
|
||||
@echo "Exporting to HTML..."
|
||||
npx @marp-team/marp-cli $(BUILD_DIR)/all.md -o $(BUILD_DIR)/all.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:
|
||||
@@ -93,8 +94,30 @@ install:
|
||||
@echo "Installing dependencies..."
|
||||
npm install
|
||||
|
||||
# Deploy slides
|
||||
# Optimize images (resize to max 1920px, requires nix-shell -p imagemagick)
|
||||
optimize-images:
|
||||
@echo "Backing up originals to assets-original/..."
|
||||
@mkdir -p $(SLIDES_DIR)/assets-original
|
||||
@cp $(SLIDES_DIR)/assets/*.png $(SLIDES_DIR)/assets-original/ 2>/dev/null || true
|
||||
@cp $(SLIDES_DIR)/assets/*.jpg $(SLIDES_DIR)/assets-original/ 2>/dev/null || true
|
||||
@echo "Resizing images to max 1920px..."
|
||||
@nix-shell -p imagemagick --run 'for img in $(SLIDES_DIR)/assets/*.png; do magick "$$img" -resize "1920x>" -quality 85 "$$img"; done'
|
||||
@nix-shell -p imagemagick --run 'for img in $(SLIDES_DIR)/assets/*.jpg; do magick "$$img" -resize "1920x>" -quality 85 "$$img"; done'
|
||||
@echo "Done! Originals backed up in assets-original/"
|
||||
|
||||
# Deploy slides (full build)
|
||||
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/
|
||||
@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
|
||||
|
||||
Reference in New Issue
Block a user