.PHONY: run
run:
	@uv run fastapi dev core_framework/asgi.py

.PHONY: run-check-threads
run-check-threads:
	@uv run python -m core_framework.main

.PHONY: alembic
alembic:
	@uv run cf-alembic

.PHONY: ruff
ruff:
	@uv run ruff check --fix .
	@uv run ruff format .

.PHONY: ty
ty:
	@uv run ty check

.PHONY: vulture
vulture:
	@uv run vulture core_framework/ --min-confidence 60

.PHONY: test
test:
	@echo "Starting Firebase Emulator..."
	@firebase emulators:start --only auth --project=test > /dev/null 2>&1 & \
	EMULATOR_PID=$$!; \
	sleep 3; \
	echo "Running tests with emulator..."; \
	FIREBASE_AUTH_EMULATOR_HOST=localhost:9099 uv run pytest; \
	TEST_EXIT=$$?; \
	echo "Stopping emulator..."; \
	kill $$EMULATOR_PID 2>/dev/null || true; \
	exit $$TEST_EXIT

.PHONY: coverage
coverage:
	@echo "Starting Firebase Emulator..."
	@firebase emulators:start --only auth --project=test > /dev/null 2>&1 & \
	EMULATOR_PID=$$!; \
	sleep 3; \
	echo "Running coverage with emulator..."; \
	uv run coverage erase; \
	FIREBASE_AUTH_EMULATOR_HOST=localhost:9099 uv run coverage run -m pytest; \
	uv run coverage combine; \
	uv run coverage report; \
	uv run coverage html; \
	COVERAGE_EXIT=$$?; \
	echo "Stopping emulator..."; \
	kill $$EMULATOR_PID 2>/dev/null || true; \
	exit $$COVERAGE_EXIT
