.PHONY: generate sync-specs install dev test clean

VENV := .venv
PYTHON := $(VENV)/bin/python
OPENAPI_REPO := $(HOME)/context/v1/openapi

# Generate SDK from specs
generate:
	$(PYTHON) generator/generate.py

# Sync surface specs from the canonical OpenAPI bundle then generate
sync-specs:
	@echo "→ Syncing surface specs..."
	mkdir -p specs
	rm -f specs/*.json
	cp $(OPENAPI_REPO)/compute-api.json specs/
	cp $(OPENAPI_REPO)/orchestrator-api.json specs/
	cp $(OPENAPI_REPO)/registry-api.json specs/
	@echo "✓ Specs synced"
	$(MAKE) generate

# Setup venv and install deps
install:
	uv venv
	$(VENV)/bin/pip install -e ".[dev]"

# Install dev deps (jinja2 for generator)
dev:
	$(VENV)/bin/pip install jinja2

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

# Verify imports work
check:
	$(PYTHON) -c "from hexel import Hexel; print('✅ hexel', __import__('hexel').__version__)"

# Clean generated files
clean:
	rm -rf hexel/compute/_*.py hexel/compute/types.py hexel/compute/__init__.py
	rm -f generator/ir.json

# Full rebuild: sync specs + generate + check
all: sync-specs check
