.DEFAULT_GOAL := help

VENV := .venv
PYTHON := $(VENV)/bin/python
PIP := $(VENV)/bin/pip

## help: Show available targets
.PHONY: help
help:
	@grep -h '##' $(MAKEFILE_LIST) | grep -v grep | sed 's/## //'

## local-install: Create virtualenv, install inthub CLI in editable mode, and link to /usr/local/bin
.PHONY: local-install
local-install:
	@if [ ! -d "$(VENV)" ]; then \
		echo "Creating virtualenv..."; \
		python3 -m venv $(VENV); \
	fi
	$(PIP) install -e ".[dev]" -q
	@mkdir -p "$(HOME)/.local/bin"
	@ln -sf "$(CURDIR)/$(VENV)/bin/inthub" "$(HOME)/.local/bin/inthub"
	@printf '#!/bin/sh\nINTHUB_BASE_URL=http://localhost:8080/api exec inthub "$$@"\n' \
		> "$(HOME)/.local/bin/inthublocal"
	@chmod +x "$(HOME)/.local/bin/inthublocal"
	@echo "Done. 'inthub' and 'inthublocal' linked to ~/.local/bin/"
	@echo "$(PATH)" | grep -q "$(HOME)/.local/bin" || \
		echo "⚠️  Add ~/.local/bin to PATH: export PATH=\"\$$HOME/.local/bin:\$$PATH\""

## lint: Run ruff linter
.PHONY: lint
lint:
	$(VENV)/bin/ruff check inthub/ tests/

## type-check: Run mypy type checker
.PHONY: type-check
type-check:
	$(VENV)/bin/mypy inthub/

## test: Run pytest
.PHONY: test
test:
	$(VENV)/bin/pytest tests/ -v
