.PHONY: help
.DEFAULT_GOAL := help

COMPONENT = porta
VERSION ?=  2.7
TARGET ?= 3scale-amp-$(VERSION)-rhel-7-candidate

GIT_BRANCH = $(shell git symbolic-ref --short HEAD)

TAG ?= $(shell cut -f 2 -d ' ' source-repos)
BRANCH ?= $(TAG)
SOURCE ?= $(BRANCH).tar.gz
BUILD_TYPE ?= local

BACKEND_IMAGE := registry.redhat.io/3scale-amp26/backend

$(COMPONENT)-$(SOURCE):
	rhpkg sources

build: $(COMPONENT)-$(SOURCE) ## build on Docker with BUILD_TYPE = [local (default)]
	docker build . --build-arg BUILD_TYPE=$(BUILD_TYPE)

test: ## build on OSBS w/ --scratch
	rhpkg container-build --scratch --target=$(TARGET)

brew: ## build on OSBS
ifneq (,$(findstring private-,$(GIT_BRANCH)))
	$(error can't build from private branch $(GIT_BRANCH))
else
	rhpkg container-build --target=$(TARGET)
endif

# Check http://marmelab.com/blog/2016/02/29/auto-documented-makefile.html
help: ## Print this help
	@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)


$(COMPONENT)-$(BRANCH)/Gemfile.lock: $(COMPONENT)-$(SOURCE)
	tar --extract --gunzip --touch --file=$(COMPONENT)-$(SOURCE)

include docker-compose.mk

run: export PORTA_IMAGE := $(SMOKE_IMAGE)
run: export BACKEND_IMAGE := $(BACKEND_IMAGE)
run: $(DOCKER_COMPOSE)
	$(DOCKER_COMPOSE) run --user=1002 --rm system $(CMD)

.PHONY: smoke
smoke: export PORTA_IMAGE := $(SMOKE_IMAGE)
smoke: export BACKEND_IMAGE := $(BACKEND_IMAGE)
smoke: $(DOCKER_COMPOSE) ## Run some Smoke tests
	# setup
	$(DOCKER_COMPOSE) up --detach mysql
	sleep 30
	$(DOCKER_COMPOSE) run --rm -e RAILS_LOG_LEVEL=error system rake db:drop db:setup
	# see if it all starts up
	$(DOCKER_COMPOSE) up --detach system
	sleep 30
	docker logs system-smoke 2>&1 | grep "listening on addr=0.0.0.0:3000"
	docker logs system-smoke 2>&1 | grep "master process ready"
	docker logs system-smoke 2>&1 | grep "worker=0 ready"
	docker exec system-smoke bash -c 'curl --header "X-Forwarded-Proto: https" localhost:3000/check.txt | grep ok'
	docker exec system-smoke bash -c '[ $$(cat public/packs/manifest.json | wc -l) -ge 1 ]'
	$(DOCKER_COMPOSE) rm -v --stop --force
