#---PHPQA---#
PHPQA = jakzal/phpqa
PHPQA_RUN = $(DOCKER_RUN) --init -it --rm -v $(PWD)/app:/project -w /project $(PHPQA)
#------------#
#---PHPUNIT-#
#PHPUNIT = APP_ENV=test $(SYMFONY) php bin/phpunit
PHPUNIT = $(DOCKER_EXEC) $(APP_CONTAINER) php bin/phpunit
#------------#
## === 🆘 HELP ==================================================
help: ## Show this help.
@echo "Symfony-And-Docker-Makefile"
@echo "---------------------------"
@echo "Usage: make [target]"
@echo ""
@echo "Targets:"
@grep -E '(^[a-zA-Z0-9_-]+:.*?##.*$$)|(^##)' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}{printf "\\033[32m%-30s\\033[0m %s\\n", $$1, $$2}' | sed -e 's/\\[32m##/[33m/'
#---------------------------------------------#
## === 🐛 PHPQA =================================================
qa-cs-fixer-dry-run: ## Run php-cs-fixer in dry-run mode.
$(PHPQA_RUN) php-cs-fixer fix ./src --rules=@Symfony --verbose --dry-run
.PHONY: qa-cs-fixer-dry-run
qa-cs-fixer: ## Run php-cs-fixer.
$(PHPQA_RUN) php-cs-fixer fix ./src --rules=@Symfony --verbose
.PHONY: qa-cs-fixer
qa-phpstan: ## Run phpstan.
$(PHPQA_RUN) phpstan analyse ./src --level=7
.PHONY: qa-phpstan
qa-security-checker: ## Run security-checker.
$(SYMFONY) security:check
.PHONY: qa-security-checker
qa-phpcpd: ## Run phpcpd (copy/paste detector).
$(PHPQA_RUN) phpcpd ./src
.PHONY: qa-phpcpd
qa-php-metrics: ## Run php-metrics.
$(PHPQA_RUN) phpmetrics --report-html=var/phpmetrics ./src
.PHONY: qa-php-metrics
qa-lint-twigs: ## Lint twig files.
$(SYMFONY_LINT)twig ./templates
.PHONY: qa-lint-twigs
qa-lint-yaml: ## Lint yaml files.
$(SYMFONY_LINT)yaml ./config
.PHONY: qa-lint-yaml
qa-lint-container: ## Lint container.
$(SYMFONY_LINT)container
.PHONY: qa-lint-container
qa-lint-schema: ## Lint Doctrine schema.
$(SYMFONY_CONSOLE) doctrine:schema:validate --skip-sync -vvv --no-interaction
.PHONY: qa-lint-schema
#---------------------------------------------#
## === 🔎 TESTS =================================================
tests: ## Run tests.
$(PHPUNIT) --testdox
.PHONY: tests
tests-coverage: ## Run tests with coverage and create html report in var/coverage.
$(PHPUNIT) --coverage-html var/coverage
.PHONY: tests-coverage
#---------------------------------------------#