VENV ?= .venv
PYTHON ?= $(VENV)/bin/python
PIP ?= $(PYTHON) -m pip
PYTEST ?= $(PYTHON) -m pytest
RUFF ?= $(VENV)/bin/ruff

.PHONY: help install-dev test lint run verify-pin validate-app-toml

help:
	@echo "make install-dev  Create .venv and install runtime + dev dependencies"
	@echo "make test         Run the test suite"
	@echo "make lint         Run syntax and static checks"
	@echo "make run          Start the local API on 127.0.0.1:8090"
	@echo "make verify-pin         Check production against the repo's pinned digest"
	@echo "make validate-app-toml  Validate railiance/app.toml against railiance.app.v1"

$(VENV)/bin/python:
	python3 -m venv $(VENV)

$(VENV)/.dev-installed: pyproject.toml $(VENV)/bin/python
	$(PIP) install --upgrade pip
	$(PIP) install -e ".[dev]"
	@touch $(VENV)/.dev-installed

install-dev: $(VENV)/.dev-installed

test: $(VENV)/.dev-installed
	$(PYTEST)

lint: $(VENV)/.dev-installed
	$(PYTHON) -m compileall src tests
	$(RUFF) check src tests

run: $(VENV)/.dev-installed
	$(PYTHON) -m tenant_engine.main

# Needs cluster access. tenant-engine runs on railiance01:
#   KUBECONFIG=~/.kube/config-railiance01 make verify-pin
validate-app-toml: $(VENV)/.dev-installed
	$(PYTHON) tests/validate_app_toml.py

verify-pin:
	@./deploy/verify-pin.sh
