
GRAY     = "\e[0;30m"
RED      = "\e[0;31m"
GREEN    = "\e[0;32m"
YELLOW   = "\e[0;33m"
BLUE     = "\e[0;34m"
PURPLE   = "\e[0;35m"
CYAN     = "\e[0;36m"
WHITE    = "\e[0;37m"

B_GRAY   = "\e[1;30m"
B_RED    = "\e[1;31m"
B_GREEN  = "\e[1;32m"
B_YELLOW = "\e[1;33m"
B_BLUE   = "\e[1;34m"
B_PURPLE = "\e[1;35m"
B_CYAN   = "\e[1;36m"
B_WHITE  = "\e[1;37m"

RESET    = "\e[0m"

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #

COMPOSE		 =	./srcs/docker-compose.yml

VOLUMES_D	 =	$(shell grep "^HOST_VOLUME" ./srcs/.env | cut -d "=" -f 2)
#VOLUME_PATH	 =	$(shell grep "^HOST_VOLUME" ./srcs/.env | cut -d "=" -f 2)
#VOLUMES_D	 =	$(VOLUME_PATH)/wp_volume \
#				$(VOLUME_PATH)/db_volume
WP_URL		 =	$(shell grep "WP_URL" ./srcs/.env | cut -d "=" -f 2)

# list of running containers, see : https://stackoverflow.com/questions/10024279/how-to-use-shell-commands-in-makefile
RUNNING		 =	$(shell docker ps -q)
# list of volumes
VOLUMES		 =	$(shell docker volume ls -q)

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #

all: volumes build up

volumes:
	mkdir -p $(VOLUMES_D)

build:
	- if ! grep "127.0.0.1  $(WP_URL)" /etc/hosts 2> /dev/null; then \
		bash -c 'echo -e "\n# adding for inception (you can delete it)\n127.0.0.1  $(WP_URL)" >> /etc/hosts'; \
	  fi
	docker-compose -f $(COMPOSE) build

up:
	docker-compose -f $(COMPOSE) up -d

down:
	docker-compose -f $(COMPOSE) down

# list images, containers, volumes
list:
	@echo $(B_YELLOW)"\nimages:"$(RESET)
	@docker images -a
	@echo $(B_YELLOW)"\nvolumes:"$(RESET)
	@docker volume ls
	@echo $(B_YELLOW)"\nvolumes content:"$(RESET)
	- @ls $(VOLUMES_D)
	@echo $(B_YELLOW)"\nnetworks:"$(RESET)
	@docker network ls
	@echo $(B_YELLOW)"\ncontainers:"$(RESET)
	@docker ps -a
	@echo ""

# remove project images and containers not used
clean:
	- docker stop $(RUNNING)
	docker network prune -f
	docker system prune -f

# remove everything except local volumes data
fclean-images: clean
	- docker stop $(RUNNING)
	docker system prune -af
fclean-volumes: clean
	- docker volume rm $(VOLUMES)
fclean: fclean-images fclean-volumes

re: fclean all

# !! remove everything everything
erase_v:
	- rm -rf $(VOLUMES_D)
new: erase_v re

.PHONY : all $(VOLUMES_D) build up list clean fclean re erase_v new

