.PHONY: ci_unit_lint ci_unit_lint_clean env_test docker_build docker_run docker_run_env

# Docker targets
docker_build:
	docker compose build gen-ai-pr-review

docker_run: docker_run_dev

docker_run_dev: docker_build
	$(MAKE) docker_run_env ENV=dev

docker_run_prod: docker_build
	$(MAKE) docker_run_env ENV=prod

docker_run_env:
	docker compose run --rm -e Environment=$(ENV) gen-ai-pr-review

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

down_unit_lint:  ## Teardown any remaining Docker containers related to lint and unit tests
	docker compose down unit-lint --remove-orphans

# Environment setup
env_test:
	uv sync --group test

# CI targets
ci_unit_lint: ci_unit_lint_clean  ## Run lint and unit tests in CI/CD
	mkdir -p build
	chmod a+w build
	make docker_unit_lint

ci_unit_lint_clean: down_unit_lint  ## Teardown lint and unit tests in CI/CD
	rm -rf build
