# Makefile – PRO Mode

# Vollständiger Build-/Deploy-/Diagnose-Workflow für das XTTS2 TTS System

PYTHON := python3
PORT_SCRIPT := scripts/find_port.py
PORT_FILE := gateway/port.txt
DOCKER := docker compose

.DEFAULT_GOAL := help

help:
	@echo ""
	@echo "🚀 XTTS2 TTS Server – Makefile (Pro Mode)"
	@echo "-------------------------------------------"
	@echo " make build           → Images bauen (Gateway + Worker)"
	@echo " make up              → Services starten (mit Portscan)"
	@echo " make down            → Services stoppen"
	@echo " make restart         → Neustart"
	@echo " make logs            → Logs aller Services anzeigen"
	@echo " make status          → Docker Status"
	@echo " make worker-scale N=3 → Worker skalieren"
	@echo " make prune           → Docker aufräumen"
	@echo " make selftest        → System-Selbsttest"
	@echo " make port            → Zeigt aktuellen Gateway Port"
	@echo "-------------------------------------------"

# ---------------------------------------------------------
# Build
# ---------------------------------------------------------

build:
	$(DOCKER) build

# ---------------------------------------------------------
# Deploy
# ---------------------------------------------------------

up:
	@echo "🔍 Suche freien Port zwischen 8000–8100..."
	@PORT=`$(PYTHON) $(PORT_SCRIPT)`; \
	if [ "$$PORT" = "ERR_NO_FREE_PORT" ]; then \
		echo "❌ Kein freier Port gefunden!"; exit 1; \
	fi; \
	echo "🎧 Freier Port gefunden: $$PORT"; \
	echo "$$PORT" > $(PORT_FILE); \
	echo "📄 Port gespeichert in $(PORT_FILE)"; \
	export GATEWAY_PORT=$$PORT; \
	$(DOCKER) up -d --build; \
	echo "🚀 Gateway läuft auf http://localhost:$$PORT"

# ---------------------------------------------------------
# Stop
# ---------------------------------------------------------

down:
	$(DOCKER) down

# ---------------------------------------------------------
# Restart
# ---------------------------------------------------------

restart: down up

# ---------------------------------------------------------
# Logs
# ---------------------------------------------------------

logs:
	$(DOCKER) logs -f

# ---------------------------------------------------------
# Status
# ---------------------------------------------------------

status:
	$(DOCKER) ps

# ---------------------------------------------------------
# Worker Scaling
# ---------------------------------------------------------

worker-scale:
	@if [ -z "$(N)" ]; then echo "Bitte N angeben: make worker-scale N=3"; exit 1; fi
	$(DOCKER) up -d --scale worker=$(N)

# ---------------------------------------------------------
# Cleanup
# ---------------------------------------------------------

prune:
	$(DOCKER) down
	docker system prune -f

# ---------------------------------------------------------
# Selftest
# ---------------------------------------------------------

selftest:
	@echo "🧪 Starte Selbsttest..."
	$(PYTHON) scripts/selftest.py

# ---------------------------------------------------------
# Show Port
# ---------------------------------------------------------

port:
	@echo "📡 Aktueller Port:"
	@cat $(PORT_FILE)