.DEFAULT_GOAL := help

SHELL := /bin/bash

BLACK := $(shell tput -Txterm setaf 0)
RED := $(shell tput -Txterm setaf 1)
GREEN  := $(shell tput -Txterm setaf 2)
YELLOW := $(shell tput -Txterm setaf 3)
BLUE := $(shell tput -Txterm setaf 4)
MAGENTA := $(shell tput -Txterm setaf 5)
CYAN := $(shell tput -Txterm setaf 6)
WHITE  := $(shell tput -Txterm setaf 7)
RESET  := $(shell tput -Txterm sgr0)

TARGET_COLOR := $(YELLOW)
DESCRIPTION_COLOR := $(GREEN)
TARGET_MAX_CHAR_NUM := 13



## Show this help
help:
	@echo ''
	@echo 'Usage:'
	@echo '  ${TARGET_COLOR}make${RESET} ${DESCRIPTION_COLOR}<target>${RESET}'
	@echo ''
	@echo 'Targets:'
	@awk '/^[a-zA-Z\-_0-9\\:]+:/ { \
		helpMessage = match(lastLine, /^## (.*)/); \
		if (helpMessage) { \
			gsub( "\\\\:", ":", $$1 ); \
			helpCommand = $$1; sub(/:$$/, "", helpCommand); \
			helpMessage = substr(lastLine, RSTART + 3, RLENGTH); \
			printf "  ${TARGET_COLOR}%-$(TARGET_MAX_CHAR_NUM)s${RESET} ${DESCRIPTION_COLOR}%s${RESET}\n", helpCommand, helpMessage; \
		} \
	} \
	{ lastLine = $$0 }' $(MAKEFILE_LIST) | sort -n



## Docker: start containers
docker\:up:
	docker-compose up -d --force-recreate
	make docker:logs
## Alias: Docker:up
up: docker\:up



## Docker: stop containers
docker\:down:
	docker-compose down
## Alias: docker:down
down: docker\:down



## Docker: restart containers (down + up)
docker\:reup: docker\:down docker\:up
## Alias: docker:reup
reup: docker\:reup


## Docker: pull images
docker\:pull:
	docker-compose pull
## Alias: docker:pull
pull: docker\:pull



## Docker: tail logs
docker\:logs:
	docker-compose logs -f
## Alias: docker:logs
logs: docker\:logs
