PROJECT = webedia-routing-bundle
GCP_PROJECT_ID = ac_registry
GCP_REGISTRY = eu.gcr.io/$(GCP_PROJECT_ID)

DOCKER_COMPOSE_OVERRIDE ?= dev
export VOLUME_USER_ID?=$(shell id -u)
export APP_ENV?=dev
export HIGHEST_LOWEST?= update

ifeq (,$(shell which docker))
TB=/bin/sh -c
TB_NODEPS=/bin/sh -c
else
TB_OPTS=$(shell [ -t 0 ] || echo '-T')
TB=docker compose exec $(TB_OPTS) $(PROJECT)-app /bin/sh -c
TB_NODEPS=docker compose run $(TB_OPTS) --rm --no-deps $(PROJECT)-app /bin/sh -c
endif

.PHONY: sh
sh:
	$(TB_NODEPS) sh

.PHONY: install
install:
ifeq (,$(filter $(APP_ENV),dev test))
	$(TB_NODEPS) 'APP_ENV=$(APP_ENV) composer $ --no-dev \
		--no-progress \
		--no-suggest \
		--no-interaction \
		--optimize-autoloader'
else
	$(TB_NODEPS) 'composer install --no-progress -n'
endif

.PHONY: update
update:
	$(TB_NODEPS) 'composer ${HIGHEST_LOWEST} --no-progress -n'

.PHONY: quality
quality: phpstan phpmd ## Run quality tools

.PHONY: lint
lint: ## Dry-run PHP lint
	$(TB_NODEPS) 'DRY_RUN=1 .php-cs-fixer/format.sh;'

.PHONY: phpstan
phpstan:
	$(TB_NODEPS) 'vendor/bin/phpstan analyse src/ --level 7'

.PHONY: phpmd
phpmd:
	$(TB_NODEPS) 'vendor/bin/phpmd src/ text .phpmd/ruleset.xml'

.PHONY: clean
clean: ## Clean all files not versioned
	git clean -xdf

.PHONY: test
test: ## Run tests
	$(TB_NODEPS) 'vendor/bin/simple-phpunit'

help:
	@grep -h -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
