# Makefile for building Brevet card PDF in Docker

IMAGE_NAME := brevetcard-builder
TEX_FILE_PERSONALIZED := brevetkarte-personalized.tex
TEX_FILE_BLANKO := brevetkarte-blanko.tex
TEX_FILE_BACK := brevetkarte-rueckseite.tex
PDF_FILE_PERSONALIZED := brevetkarte-personalized.pdf
PDF_FILE_BLANKO := brevetkarte-blanko.pdf
PDF_FILE_BACK := brevetkarte-rueckseite.pdf
CSV_FILE := export_brevetcard.csv

.PHONY: all build clean build-image build-back generate build-personalized build-blanko run shell help

# Default target
all: build-personalized build-blanko

# Build Docker image
build-image:
	@echo "Building Docker image..."
	docker build -t $(IMAGE_NAME) .

# Compile back side PDF (after generate)
build-back: build-image
	@echo "Compiling back side LaTeX to PDF..."
	docker run --rm \
		-v $(PWD):/workspace \
		$(IMAGE_NAME) \
		pdflatex -interaction=nonstopmode $(TEX_FILE_BACK)
	@echo "PDF generated: $(PDF_FILE_BACK)"

# Generate all tex files from CSV + event.yml
generate:
	@echo "Generating cards from $(CSV_FILE) + event.yml..."
	@if [ ! -f "$(CSV_FILE)" ]; then \
		echo "Error: $(CSV_FILE) not found!"; \
		exit 1; \
	fi
	python3 generate_cards.py

# Build personalized front + event back side PDFs
build-personalized: generate build-image
	@echo "Compiling personalized front side to PDF..."
	docker run --rm \
		-v $(PWD):/workspace \
		$(IMAGE_NAME) \
		pdflatex -interaction=nonstopmode $(TEX_FILE_PERSONALIZED)
	@echo "PDF generated: $(PDF_FILE_PERSONALIZED)"
	@echo "Compiling back side to PDF..."
	docker run --rm \
		-v $(PWD):/workspace \
		$(IMAGE_NAME) \
		pdflatex -interaction=nonstopmode $(TEX_FILE_BACK)
	@echo "PDF generated: $(PDF_FILE_BACK)"

# Build blank (blanko) front + event back side PDFs (no CSV required)
build-blanko: build-image
	@echo "Generating blank card..."
	python3 generate_cards.py --blanko
	@echo "Compiling blank front side to PDF..."
	docker run --rm \
		-v $(PWD):/workspace \
		$(IMAGE_NAME) \
		pdflatex -interaction=nonstopmode $(TEX_FILE_BLANKO)
	@echo "PDF generated: $(PDF_FILE_BLANKO)"
	@echo "Compiling back side to PDF..."
	docker run --rm \
		-v $(PWD):/workspace \
		$(IMAGE_NAME) \
		pdflatex -interaction=nonstopmode $(TEX_FILE_BACK)
	@echo "PDF generated: $(PDF_FILE_BACK)"

# Run container interactively
run:
	docker run --rm -it \
		-v $(PWD):/workspace \
		$(IMAGE_NAME) \
		/bin/bash

# Open shell in container for debugging
shell:
	docker run --rm -it \
		-v $(PWD):/workspace \
		--entrypoint /bin/bash \
		$(IMAGE_NAME)

# Clean generated files
clean:
	@echo "Cleaning generated files..."
	rm -f *.aux *.log *.out *.toc *.pdf

# Clean everything including Docker image
clean-all: clean
	@echo "Removing Docker image..."
	docker rmi $(IMAGE_NAME) 2>/dev/null || true

# Rebuild from scratch
rebuild: clean-all build-personalized

# Show help
help:
	@echo "Brevet Card PDF Builder"
	@echo ""
	@echo "Available targets:"
	@echo "  make                    - Generate and compile front + back side PDFs (default)"
	@echo "  make build-image        - Build Docker image only"
	@echo "  make generate           - Generate tex files from CSV + event.yml"
	@echo "  make build-personalized - Generate and compile front + back side PDFs"
	@echo "  make build-blanko       - Generate and compile blank card (no CSV needed)"
	@echo "  make build-back         - Compile back side PDF only (after generate)"
	@echo "  make shell              - Open interactive shell in container"
	@echo "  make clean              - Remove generated files (aux, log, pdf)"
	@echo "  make clean-all          - Remove all files and Docker image"
	@echo "  make rebuild            - Clean everything and rebuild"
	@echo "  make help               - Show this help message"
