# BreakPilot PWA - Makefile fuer lokale CI-Simulation
#
# Verwendung:
#   make ci          - Alle Tests lokal ausfuehren
#   make test-go     - Nur Go-Tests
#   make test-python - Nur Python-Tests
#   make logs-agent  - Woodpecker Agent Logs
#   make logs-backend - Backend Logs (ci-result)

.PHONY: ci test-go test-python test-node logs-agent logs-backend clean help

# Verzeichnis fuer Test-Ergebnisse
CI_RESULTS_DIR := .ci-results

help:
	@echo "BreakPilot CI - Verfuegbare Befehle:"
	@echo ""
	@echo "  make ci          - Alle Tests lokal ausfuehren"
	@echo "  make test-go     - Go Service Tests"
	@echo "  make test-python - Python Service Tests"
	@echo "  make test-node   - Node.js Service Tests"
	@echo "  make logs-agent  - Woodpecker Agent Logs anzeigen"
	@echo "  make logs-backend - Backend Logs (ci-result) anzeigen"
	@echo "  make clean       - Test-Ergebnisse loeschen"

ci: test-go test-python test-node
	@echo "========================================="
	@echo "Local CI complete. Results in $(CI_RESULTS_DIR)/"
	@echo "========================================="
	@ls -la $(CI_RESULTS_DIR)/

test-go: $(CI_RESULTS_DIR)
	@echo "=== Go Tests ==="
	@if [ -d "consent-service" ]; then \
		cd consent-service && go test -v -json ./... > ../$(CI_RESULTS_DIR)/test-consent.json 2>&1 || true; \
		echo "consent-service: done"; \
	fi
	@if [ -d "billing-service" ]; then \
		cd billing-service && go test -v -json ./... > ../$(CI_RESULTS_DIR)/test-billing.json 2>&1 || true; \
		echo "billing-service: done"; \
	fi
	@if [ -d "school-service" ]; then \
		cd school-service && go test -v -json ./... > ../$(CI_RESULTS_DIR)/test-school.json 2>&1 || true; \
		echo "school-service: done"; \
	fi

test-python: $(CI_RESULTS_DIR)
	@echo "=== Python Tests ==="
	@if [ -d "backend" ]; then \
		cd backend && python -m pytest tests/ -v --tb=short 2>&1 || true; \
		echo "backend: done"; \
	fi
	@if [ -d "voice-service" ]; then \
		cd voice-service && python -m pytest tests/ -v --tb=short 2>&1 || true; \
		echo "voice-service: done"; \
	fi
	@if [ -d "klausur-service/backend" ]; then \
		cd klausur-service/backend && python -m pytest tests/ -v --tb=short 2>&1 || true; \
		echo "klausur-service: done"; \
	fi

test-node: $(CI_RESULTS_DIR)
	@echo "=== Node.js Tests ==="
	@if [ -d "h5p-service" ]; then \
		cd h5p-service && npm test 2>&1 || true; \
		echo "h5p-service: done"; \
	fi

$(CI_RESULTS_DIR):
	@mkdir -p $(CI_RESULTS_DIR)

logs-agent:
	docker logs breakpilot-pwa-woodpecker-agent --tail=200

logs-backend:
	docker compose logs backend --tail=200 | grep -E "(ci-result|error|ERROR)"

clean:
	rm -rf $(CI_RESULTS_DIR)
	@echo "Test-Ergebnisse geloescht"
