.PHONY: clean uv_dev dev test_unit lint fmt docker_unit_lint docker_run docker_down

clean: ## Clean env
	rm -rf .venv
	rm -rf src/common

env uv_dev:  ## Prepare environment
	uv venv --allow-existing
	uv sync --locked

dev: uv_dev ## Run local for development
	uv run python -m src.dev

test_unit: uv_dev ## Run unit tests
	uv run python -m pytest

lint: uv_dev ## Run code linters
	uv run mypy src tests config.py
	uv run ruff check src tests config.py
	uv run ruff format src tests config.py --diff

fmt: uv_dev ## Run code formatters
	uv run mypy src tests config.py
	uv run ruff check src tests config.py --fix
	uv run ruff format src tests config.py

docker_run:
	docker compose up \
		--build \
		--exit-code-from function \
		--abort-on-container-exit \
		--remove-orphans \
		function

docker_unit_lint:  # Run lint and unit tests in Docker
	docker compose up \
		--build \
		--exit-code-from lint-and-test \
		--remove-orphans \
		lint-and-test

docker_down:  # End the lambda container
	docker compose down function
