.PHONY: install install-dev install-all dev test lint format clean docker-build docker-up docker-down help

# Default Python interpreter
PYTHON ?= python3
VENV := venv

help: ## Show this help message
	@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | \
		awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'

# ──────────────────────────────────────────────────────────────────────────────
# Setup
# ──────────────────────────────────────────────────────────────────────────────

install: ## Install core + ML dependencies
	$(PYTHON) -m pip install -e ".[ml,import]"

install-dev: ## Install everything including dev & test tools
	$(PYTHON) -m pip install -e ".[all]"

install-all: install-dev ## Alias for install-dev

# ──────────────────────────────────────────────────────────────────────────────
# Development
# ──────────────────────────────────────────────────────────────────────────────

dev: ## Start the development server with hot-reload
	$(PYTHON) -m uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload

run: ## Start the production server
	$(PYTHON) -m uvicorn app.main:app --host 0.0.0.0 --port 8000

# ──────────────────────────────────────────────────────────────────────────────
# Quality
# ──────────────────────────────────────────────────────────────────────────────

lint: ## Run linter (ruff) and type checker (mypy)
	$(PYTHON) -m ruff check app/ tests/ scripts/
	$(PYTHON) -m mypy app/ --ignore-missing-imports

format: ## Auto-format code with ruff
	$(PYTHON) -m ruff format app/ tests/ scripts/
	$(PYTHON) -m ruff check --fix app/ tests/ scripts/

# ──────────────────────────────────────────────────────────────────────────────
# Testing
# ──────────────────────────────────────────────────────────────────────────────

test: ## Run the test suite
	$(PYTHON) -m pytest tests/ -v

test-cov: ## Run tests with coverage report
	$(PYTHON) -m pytest tests/ -v --cov=app --cov-report=term-missing

# ──────────────────────────────────────────────────────────────────────────────
# Data
# ──────────────────────────────────────────────────────────────────────────────

catalog-generate: ## Generate catalog from live kicksofiran.com API
	$(PYTHON) -m scripts.generate_live_catalog

catalog-import: ## Import catalog from Excel file in data/
	$(PYTHON) -m scripts.import_products

# ──────────────────────────────────────────────────────────────────────────────
# Docker
# ──────────────────────────────────────────────────────────────────────────────

docker-build: ## Build the Docker image
	docker compose build

docker-up: ## Start services with Docker Compose
	docker compose up -d

docker-down: ## Stop Docker Compose services
	docker compose down

docker-logs: ## Tail Docker Compose logs
	docker compose logs -f

# ──────────────────────────────────────────────────────────────────────────────
# Cleanup
# ──────────────────────────────────────────────────────────────────────────────

clean: ## Remove build artifacts and caches
	find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
	find . -type f -name "*.pyc" -delete 2>/dev/null || true
	rm -rf .pytest_cache .mypy_cache .ruff_cache htmlcov .coverage
	rm -rf dist build *.egg-info
