# Include .env file for environment variables (like UV_PUBLISH_TOKEN)
-include .env
export

# Use local data directory for processing
DATA_DIR = $(shell pwd)/data

OSM_FILE = costa-rica-latest.osm.pbf
OSRM_IMAGE = ghcr.io/project-osrm/osrm-backend
GEO_URL = http://download.geofabrik.de/central-america/$(OSM_FILE)

# Profile selection (car, bicycle, foot) - defaults to car
PROFILE ?= car

.PHONY: help download-data process-osrm clean build-pkg publish clean-pkg

help:
	@echo "Available targets:"
	@echo "  download-data  - Download Costa Rica OSM data from Geofabrik"
	@echo "  process-osrm   - Extract, partition, and customize OSRM data (PROFILE=$(PROFILE))"
	@echo "  build-pkg      - Build the Python package for PyPI distribution"
	@echo "  publish        - Publish the Python package to PyPI (requires UV_PUBLISH_TOKEN in .env)"
	@echo "  clean          - Remove downloaded and processed data"
	@echo "  clean-pkg      - Remove Python build artifacts"

download-data:
	mkdir -p $(DATA_DIR)
	curl -L $(GEO_URL) -o $(DATA_DIR)/$(OSM_FILE)

process-osrm:
	@echo "Building OSRM data builder for profile: $(PROFILE)..."
	docker build -t osrm-data-builder --build-arg PROFILE=$(PROFILE) -f Dockerfile.builder .
	@echo "Local OSRM builder image ready."

build-pkg:
	@echo "Building osrm-api-gateway package..."
	uv build

publish: build-pkg
	@echo "Publishing to PyPI..."
	@if [ -z "$$UV_PUBLISH_TOKEN" ]; then \
		echo "Error: UV_PUBLISH_TOKEN is not set in .env file or environment variables."; \
		exit 1; \
	fi
	uv publish --token $$UV_PUBLISH_TOKEN

clean:
	rm -rf $(DATA_DIR)

clean-pkg:
	rm -rf dist/

