# 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](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)
