-include .env
export

VENV := .venv
UVICORN := $(VENV)/bin/uvicorn
TEST_DEPS := $(VENV)/.test-deps
K3S_BTCDATA_PORT := 4100

.PHONY: clean run run-local run-citadel run-k3s tailwind test venv

venv: $(UVICORN)

$(UVICORN): requirements.txt
	python3 -m venv $(VENV)
	$(VENV)/bin/pip install --upgrade pip
	$(VENV)/bin/pip install -r requirements.txt

clean:
	rm -rf __pycache__ app/__pycache__

run: venv
	$(UVICORN) app.main:app --host 0.0.0.0 --port 4000 --reload

run-local: venv
	BTCDATA_URL=$(BTCDATA_LOCAL_URL) $(UVICORN) app.main:app --host 0.0.0.0 --port 4000 --reload

run-citadel: venv
	BTCDATA_URL=$(BTCDATA_URL) $(UVICORN) app.main:app --host 0.0.0.0 --port 4000 --reload

run-k3s: venv
	kubectl -n btcdata port-forward service/btcdata $(K3S_BTCDATA_PORT):4101 & \
	port_forward_pid=$$!; \
	trap 'kill $$port_forward_pid' EXIT INT TERM; \
	BTCDATA_URL=http://127.0.0.1:$(K3S_BTCDATA_PORT) $(UVICORN) app.main:app --host 0.0.0.0 --port 4000 --reload

tailwind:
	npm run css:watch

$(TEST_DEPS): requirements-dev.txt requirements.txt | venv
	$(VENV)/bin/pip install -r requirements-dev.txt
	touch $(TEST_DEPS)

test: venv $(TEST_DEPS)
	$(VENV)/bin/python -m pytest tests/
