-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
138 lines (119 loc) · 5.34 KB
/
Copy pathMakefile
File metadata and controls
138 lines (119 loc) · 5.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# =============================================================================
# KAiTix — Development Makefile
# =============================================================================
.PHONY: install dev dev-frontend dev-all status help test lint format migrate-create migrate-apply db-shell restart-all clean clean-bak check-branch update
# === UTILS & CHECKS ==========================================================
check-branch:
@BRANCH=$$(git branch --show-current); \
if ! echo "$$BRANCH" | grep -qE "^(feature/agent-.*|main|dev)$$"; then \
echo "FEHLER: Unerwarteter Branch '$$BRANCH'. Erwartet: feature/agent-*, main oder dev."; \
exit 1; \
fi
# === SETUP ===================================================================
install:
@if [ -z "$$IN_NIX_SHELL" ] && [ -z "$$NIX_BUILD_SHELL" ]; then \
echo "FEHLER: make install darf nur innerhalb von nix-shell ausgeführt werden!"; \
exit 1; \
fi
@if [ -z "$$VIRTUAL_ENV" ]; then \
echo "FEHLER: Kein virtuelles Environment (.venv) aktiv! Bitte führe zuerst 'source .venv/bin/activate' aus."; \
exit 1; \
fi
@echo ">>> Installiere Abhängigkeiten..."
python3 -m pip install -r requirements.txt
@echo ">>> Installation abgeschlossen."
update:
@echo ">>> Hole neuesten Code von GitHub (main branch)..."
git checkout main
git pull origin main
@if [ -n "$$IN_NIX_SHELL" ] && [ -n "$$VIRTUAL_ENV" ]; then \
echo ">>> Installiere neue Abhängigkeiten..."; \
make install; \
echo ">>> Wende Datenbank-Migrationen an..."; \
make migrate-apply; \
echo ">>> Update erfolgreich! Starte den Server neu mit 'make restart-all'."; \
else \
echo ">>> Code aktualisiert! WICHTIG: Um das Update abzuschließen, aktiviere die nix-shell + venv und führe aus:"; \
echo " make install && make migrate-apply"; \
fi
# === DEVELOPMENT =============================================================
dev:
@if [ ! -d ".venv" ]; then echo "FEHLER: .venv fehlt. nix-shell starten und 'make install' ausführen."; exit 1; fi
@echo ">>> Starte Backend (Port 8003)..."
. .venv/bin/activate && uvicorn app.main:app --reload --host 0.0.0.0 --port 8003
dev-frontend:
@echo ">>> Starte Frontend (Port 5175)..."
cd frontend && npm run dev
dev-all:
@if [ ! -d ".venv" ]; then echo "FEHLER: .venv fehlt. nix-shell starten und 'make install' ausführen."; exit 1; fi
@echo ">>> Starte Backend + Frontend parallel (Ctrl+C stoppt beide)..."
@trap 'kill %1 %2 2>/dev/null; exit' INT TERM; \
. .venv/bin/activate && uvicorn app.main:app --reload --host 0.0.0.0 --port 8003 & \
cd frontend && npm run dev & \
wait
status:
@echo "=== KAiTix Service Status ==="
@ss -tlnp 2>/dev/null | grep -E "8003|5175" && echo "" || echo "Keine Services aktiv"
@[ -d ".venv" ] && echo "venv: OK (.venv vorhanden)" || echo "venv: FEHLT"
@[ -n "$$IN_NIX_SHELL" ] && echo "nix-shell: AKTIV" || echo "nix-shell: nicht aktiv"
@[ -n "$$VIRTUAL_ENV" ] && echo "venv aktiv: $$VIRTUAL_ENV" || echo "venv aktiv: nein"
help:
@echo ""
@echo "KAiTix — Makefile Targets"
@echo "─────────────────────────────────────────"
@echo " make dev Backend starten (Port 8003)"
@echo " make dev-frontend Frontend starten (Port 5175)"
@echo " make dev-all Backend + Frontend parallel"
@echo " make status Service-Status anzeigen"
@echo " make install Abhängigkeiten installieren (nix-shell!)"
@echo " make test pytest"
@echo " make lint ruff + mypy"
@echo " make format ruff fix + format"
@echo " make migrate-create message='...' Alembic Revision"
@echo " make migrate-apply Alembic upgrade head"
@echo " make db-shell MySQL Shell"
@echo " make clean pycache + .bak bereinigen"
@echo ""
# === TESTING =================================================================
test:
@echo ">>> Führe Tests aus..."
pytest -v --asyncio-mode=auto
# === CODE QUALITY ============================================================
lint:
@echo ">>> Linting mit ruff..."
ruff check .
@echo ">>> Typ-Check mit mypy..."
mypy .
format:
@echo ">>> Formatiere Code mit ruff..."
ruff check --fix .
ruff format .
# === DATABASE ================================================================
migrate-create:
@if [ -z "$(message)" ]; then \
echo "FEHLER: message ist nicht definiert! Verwendung: make migrate-create message='migration description'"; \
exit 1; \
fi
@echo ">>> Neue Migration erstellen..."
python3 -m alembic revision --autogenerate -m "$(message)"
migrate-apply:
@echo ">>> Migration auf Datenbank anwenden..."
python3 -m alembic upgrade head
db-shell:
@echo ">>> Starte MySQL-Shell..."
mysql -u $$(echo $(DATABASE_URL) | sed -n 's/.*:\/\/\([^:]*\).*/\1/p') -p
# === UTILITIES ===============================================================
restart-all: clean
@echo ">>> Starte alles frisch..."
make dev
clean-bak:
@echo ">>> Bereinige *.bak Backup-Dateien..."
find . -type f -name "*.bak" -delete
@echo ">>> Backup-Dateien gelöscht."
clean: clean-bak
@echo ">>> Bereinige generierte Dateien..."
find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true
find . -type f -name "*.pyc" -delete
find . -type f -name ".coverage" -delete
rm -rf .pytest_cache .mypy_cache .ruff_cache htmlcov dist build
@echo ">>> Bereinigung abgeschlossen."