AWS_PROFILE    ?= gdb-delphi-dev
AWS_ACCOUNT_ID ?= 475275892927
AWS_REGION     ?= us-east-1

ECR_REGISTRY        ?= $(AWS_ACCOUNT_ID).dkr.ecr.$(AWS_REGION).amazonaws.com
ECR_REPOSITORY_NAME ?= delphi/qa-automation
ECR_REGISTRY_URL    ?= $(ECR_REGISTRY)/$(ECR_REPOSITORY_NAME)

REVISION ?= $(shell git rev-parse --short=8 HEAD)
VERSION ?= $(shell git rev-parse --abbrev-ref HEAD)
BRANCH_NAME ?= $(shell git rev-parse --abbrev-ref HEAD)

.PHONY:clean-up
clean-up:
	rm -rf .gradle .build .pytest_cache allure_report automation.log report.html

.PHONY:report
report:
	allure serve allure_report

.PHONY:checkstyle
checkstyle:
	set -e
	isort -rc -w 120 --check-only --quiet src/
	flake8 src/ --max-line-length=120

##   docker/login - login to AWS ECR registry using docker, aws configuration need to be set first
.PHONY:docker/login
docker/login:
	@aws ecr get-login \
		--profile ${AWS_PROFILE} \
		--no-include-email \
		--region ${AWS_REGION} | awk '{print $$6}' | \
		docker login -u AWS --password-stdin https://$(ECR_REGISTRY) || aws ecr get-login-password \
			--profile ${AWS_PROFILE} \
			--region ${AWS_REGION} | \
			docker login --username AWS --password-stdin https://$(ECR_REGISTRY)

.PHONY:docker/build
docker/build:
	docker build \
		--no-cache \
		--build-arg PACKAGE=$(PACKAGE) \
		-t $(ECR_REGISTRY_URL):latest \
		-t $(ECR_REGISTRY_URL):$(VERSION) \
		-t $(ECR_REGISTRY_URL):$(REVISION) \
		-t $(ECR_REGISTRY_URL):$(subst /,_,$(BRANCH_NAME)) .

.PHONY:docker/push
docker/push: docker/login docker/build
	docker push $(ECR_REGISTRY_URL):latest
	docker push $(ECR_REGISTRY_URL):$(subst /,_,$(BRANCH_NAME))
	docker push $(ECR_REGISTRY_URL):$(VERSION)

.PHONY:docker/pull
docker/pull: docker/login
	docker pull $(ECR_REGISTRY_URL):latest
	docker pull $(ECR_REGISTRY_URL):$(subst /,_,$(BRANCH_NAME)) || exit 0
	docker pull $(ECR_REGISTRY_URL):$(VERSION) || exit 0

.PHONY:allurereport
allurereport:
	./gradlew allureReport

.PHONY:gradletasks
gradletasks:
	./gradlew tasks --all

.PHONY:cidelphijavaapi
cidelphijavaapi:
	./gradlew ciDelphiJavaApi

.PHONY:docker/allurereport
docker/allurereport:
	docker run -it --rm -v $$(pwd):/app $(ECR_REGISTRY_URL):$(subst /,_,$(BRANCH_NAME)) ./gradlew allureReport

.PHONY:docker/gradletasks
docker/gradletasks:
	docker run -it --rm -v $$(pwd):/app $(ECR_REGISTRY_URL):$(subst /,_,$(BRANCH_NAME)) ./gradlew tasks --all

.PHONY:docker/cidelphijavaapi
docker/cidelphijavaapi:
	docker run -it --rm -v $$(pwd):/app $(ECR_REGISTRY_URL):$(subst /,_,$(BRANCH_NAME)) ./gradlew ciDelphiJavaApi
