ifdef DOCKER_LOGIN
MANDATORY = $(shell printenv MANDATORY) DOCKER_USER DOCKER_PASS DOCKER_REGISTRY
endif

ifndef DOCKER_LOGIN
DOCKER_LOGIN = 0
endif

pull-compose:
	@echo "\n### pulling image(s)"
	$(foreach host,$(DEPLOY_HOSTS), \
		echo "$(host)"; \
		if test "$(DOCKER_LOGIN)" = "1" ; \
		then \
			echo "\n#### perform docker login with user $(DOCKER_USER) on $(DOCKER_REGISTRY)"; \
			ssh $(SSH_USER)@$(host) "docker login -u $(DOCKER_USER) -p $(DOCKER_PASS) $(DOCKER_REGISTRY)"; \
		fi; \
		if test -n "$(DOCKER_IMAGE)" ; \
		then \
			ssh $(SSH_USER)@$(host) "docker pull $(DOCKER_IMAGE)"; \
		fi; \
	)

start-compose:
	@echo "\n### starting service(s)"
	$(foreach host,$(DEPLOY_HOSTS), \
		echo "$(host)"; \
		if test -n "$(DEPLOY_SUBPATH)" ; \
		then \
			ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME)/$(DEPLOY_SUBPATH); docker-compose up -d"; \
		else \
			ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); docker-compose up -d"; \
		fi; \
		sleep $(DEPLOY_START_DELAY); \
	)

logs-compose:
	@echo "\n### logs"
	$(foreach host,$(DEPLOY_HOSTS), \
		echo "$(host)"; \
		ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); docker-compose logs -f $(service)"; \
	)

restart-compose:
	@echo "\n### restarting service(s)"
	$(foreach host,$(DEPLOY_HOSTS), \
		echo "$(host)"; \
		if test -n "$(DEPLOY_SUBPATH)" ; \
		then \
			ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME)/$(DEPLOY_SUBPATH); docker-compose restart"; \
		else \
			ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); docker-compose restart"; \
		fi; \
		sleep $(DEPLOY_START_DELAY); \
	)