# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2026 Bryan Joshua Pedini
.PHONY: help dev-environment test lint lint-fix format clean e2e-up e2e-down test-e2e

VENV ?= .venv
PYTHON ?= $(VENV)/bin/python

help:
	@echo "Available targets:"
	@echo "  dev-environment  create the virtualenv and install dev dependencies"
	@echo "  test             run the unit test suite"
	@echo "  lint             run ruff checks"
	@echo "  lint-fix         run ruff checks and fix what is auto-fixable"
	@echo "  format           run the ruff formatter"
	@echo "  clean            remove the virtualenv and caches"
	@echo "  e2e-up           start the throwaway NetBox stack for e2e tests"
	@echo "  e2e-down         stop the e2e stack and delete its data"
	@echo "  test-e2e         run the end-to-end tests against the e2e stack"

dev-environment:
	python3 -m venv $(VENV)
	$(PYTHON) -m pip install --upgrade pip
	$(PYTHON) -m pip install requests PyYAML pytest responses ruff

test:
	$(PYTHON) -m pytest

lint:
	$(PYTHON) -m ruff check .

lint-fix:
	$(PYTHON) -m ruff check --fix .

format:
	$(PYTHON) -m ruff format .

e2e-up:
	test -f e2e/.env || cp e2e/env.example e2e/.env
	docker compose --project-directory e2e --env-file e2e/.env up -d --wait

e2e-down:
	docker compose --project-directory e2e --env-file e2e/.env down -v

test-e2e:
	$(PYTHON) -m pytest e2e

clean:
	rm -rf $(VENV) .pytest_cache .ruff_cache __pycache__ tests/__pycache__
