UV ?= uv

# Note: `uv` is expected on PATH. It installs to ~/.local/bin by default,
# so ensure `~/.local/bin` is on your PATH (e.g. add to ~/.zshrc:
#   export PATH="$HOME/.local/bin:$PATH"
# ). Alternatively override on the command line: `make install UV=$HOME/.local/bin/uv`.

.DEFAULT_GOAL := help

.PHONY: help install dev test lint fmt vapid-keys docker-build docker-up docker-down docker-release clean

help:
	@echo "Agent Drop - available targets:"
	@echo ""
	@echo "  make install         Install Python dependencies via uv sync"
	@echo "  make dev             Run dev server (uvicorn, --reload) on :8080"
	@echo "  make test            Run pytest"
	@echo "  make lint            Run ruff check + format --check"
	@echo "  make fmt             Run ruff format + check --fix"
	@echo "  make vapid-keys      Print a fresh VAPID keypair for Web Push (paste into .env)"
	@echo ""
	@echo "  make docker-build    Build local dev image (linux/arm64, tag agentdrop:dev)"
	@echo "  make docker-up       docker compose up --build"
	@echo "  make docker-down     docker compose down"
	@echo "  make docker-release  Build multi-arch release image (linux/amd64,linux/arm64)"
	@echo ""
	@echo "  make clean           Remove venv, caches, build artifacts"

install:
	$(UV) sync

dev:
	$(UV) run uvicorn agentdrop.main:app --reload --port 8080

test:
	$(UV) run pytest

lint:
	$(UV) run ruff check . && $(UV) run ruff format --check .

fmt:
	$(UV) run ruff format . && $(UV) run ruff check --fix .

vapid-keys:
	@$(UV) run python scripts/gen_vapid_keys.py

docker-build:
	./scripts/dev-build.sh

docker-up:
	docker compose up --build

docker-down:
	docker compose down

docker-release:
	./scripts/release-build.sh

clean:
	rm -rf .venv .pytest_cache .ruff_cache dist build
	find . -type d -name __pycache__ -prune -exec rm -rf {} +
