UID := 1000
GID := 1000

list:
	@echo ""
	@echo "Useful targets:"
	@echo ""
	@echo "  rebuild          > rebuild all images and start containers for dev only"
	@echo "  start            > start containers"
	@echo "  restart          > restart containers"
	@echo "  stop             > stop and kill running containers"
	@echo "  status           > display stack containers status"
	@echo "  logs             > display containers logs"
	@echo "  install_client   > install client dependencies"
	@echo "  shell_client     > shell into angular client container"
	@echo "  build_client     > generate the angular client dist application (html, css, js)"
	@echo "  test_client      > Starts the angular client unit tests"
	@echo "  client_coverage  > Run nginx web server test client coverage"
	@echo "  install_server   > install server dependencies"
	@echo "  shell_server     > shell into php server container"
	@echo "  test_server      > Starts the server php unit tests"
	@echo "  phpcs            > run php code sniffer test suite"
	@echo "  shell_services   > shell into python services"
	@echo "  create-db        > create a database for dev only (need token_enabled=0)"
	@echo "  remove-pgdata    > remove the anis-next database"
	@echo ""

rebuild:
	@docker-compose up --build -d

start:
	@docker-compose up -d

restart: stop start

stop:
	@docker-compose kill
	@docker-compose rm -v --force

status:
	@docker-compose ps

logs:
	@docker-compose logs -f -t

install_client:
	@docker run --init -it --rm --user $(UID):$(GID) \
	-v $(CURDIR)/client:/project \
	-w /project node:16-slim yarn install

shell_client:
	@docker-compose exec client bash

build_client:
	@docker-compose exec client ng build

test_client:
	@docker-compose exec client npx jest

client_coverage:
	@docker run --name anis-client-code-coverage -d -p 8888:80 -v $(CURDIR)/client/coverage/anis-client:/usr/share/nginx/html:ro nginx

install_server:
	@docker run --init -it --rm --user $(UID):$(GID) \
	-e COMPOSER_CACHE_DIR=/dev/null \
	-v $(CURDIR)/server:/project \
	-w /project jakzal/phpqa:php8.0 composer install --ignore-platform-reqs

shell_server:
	@docker-compose exec server bash

test_server:
	@docker run --init -it --rm --user $(UID):$(GID) \
	-v $(CURDIR)/server:/project \
	-w /project jakzal/phpqa:php8.0 phpdbg -qrr ./vendor/bin/phpunit --bootstrap ./tests/bootstrap.php \
	--whitelist src --colors --coverage-html ./phpunit-coverage ./tests

phpcs:
	@docker run --init -it --rm --user $(UID):$(GID) \
	-v $(CURDIR)/server:/project \
	-w /project jakzal/phpqa:php8.0 phpcs --standard=PSR12 --extensions=php --colors src tests

shell_services:
	@docker-compose exec services bash

create-db:
	@docker-compose exec server sh /mnt/init-keycloak.sh
	@docker-compose exec server sh /mnt/create-db.sh

remove-pgdata:
	@docker volume rm anis-next_pgdata