#!make
include .env.dist
-include .env

PHP_CONTAINER=php

# Execute commands as user
PHP_AS_USER=$(DCE) -u www-data $(PHP_CONTAINER)

# Execute Composer
COMPOSER=$(PHP_AS_USER) composer

# Docker
DC=docker compose -p $(PROJECT_NAME) --env-file .env -f tools/docker/docker-compose.yaml
DCE=$(DC) exec
DCB=DOCKER_BUILDKIT=1 $(DC) build --pull
DCU=DOCKER_BUILDKIT=1 $(DC) up -d
DCUB=DOCKER_BUILDKIT=1 $(DC) up --build -d
DCD=$(DC) down

# Project name
PROJECT_NAME=$(shell basename $(CURDIR))

# OS
UNAME_S:=$(shell uname -s)
ifeq ($(UNAME_S),Darwin)
	VERSION_CHECK=perl -nle'print $& while m{(([0-9]+\.?)+)}g'
else
	VERSION_CHECK=grep -Po '(([0-9]+\.?)+)'
endif

.PHONY: start build up down php pre-push

build:
	VERSION=$$(cat myvetshopclinique/myvetshopclinique.php | grep '>version' | $(VERSION_CHECK) ); \
	NBZIP=$$(ls -1 | grep myvetshopclinique | grep '.zip' | wc -l); \
    find . -maxdepth 1 -name 'myvetshopclinique-*.zip' -exec rm -v {} \; ; \
	zip -r -9 -q myvetshopclinique-$${VERSION}.zip myvetshopclinique

# Equals to docker-compose up -d
up:
	$(DCU)

# Equals to docker-compose down
down:
	$(DCD)

start:
	$(shell test -f .env || cp .env.dist .env)
	$(DCUB)

	#Install dependencies
	$(COMPOSER) install
	$(COMPOSER) dump

	@echo "Done."

jane:
	$(PHP_AS_USER) php vendor/bin/jane-openapi generate --config-file=doc/reporting/jane.php

php:
	$(PHP_AS_USER) bash

phpunit:
	$(COMPOSER) run phpunit

pre-push:
	$(COMPOSER) run quality

make == make start
.DEFAULT_GOAL := start
