SCHEMACHANGE_VERSION ?= latest

AWS_PROFILE ?= gdb-infra-dev
AWS_ACCOUNT ?= 483193324480
AWS_REGION  ?= us-east-1
ECR_REGISTRY = ${AWS_ACCOUNT}.dkr.ecr.${AWS_REGION}.amazonaws.com/snowflake-schemachange

REVISION ?= $(shell git rev-parse --short=8 HEAD)
BUILDTIME = $(shell date -u +"%Y%m%d%H%M%S")

VERSION_REVISION           ?= ${SCHEMACHANGE_VERSION}-${REVISION}
SCHEMACHANGE_IMAGE_VERSION ?= ${SCHEMACHANGE_VERSION}

##   docker/login - login to AWS ECR registry using docker, aws configuration need to be set first
.PHONY:docker/login
docker/login:
	@set -o pipefail; 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)

##   docker/image/build - build docker image
.PHONY: docker/image/build
docker/image/build:
	@docker buildx build \
	  --no-cache \
		--build-arg REVISION=${REVISION} \
		--build-arg BUILDTIME=${BUILDTIME} \
		-t ${ECR_REGISTRY}:${SCHEMACHANGE_VERSION} \
		-t ${ECR_REGISTRY}:${VERSION_REVISION} \
		--platform linux/amd64,linux/arm64 --push .


##   docker/image/push - push docker image to ECR registry, requires auth
.PHONY: docker/image/push
docker/image/push:
	@docker push ${ECR_REGISTRY}:${SCHEMACHANGE_VERSION}
	@docker push ${ECR_REGISTRY}:${VERSION_REVISION}

.PHONY: docker/image/pull
docker/image/pull:
	@docker pull ${ECR_REGISTRY}:${SCHEMACHANGE_VERSION}
	@docker pull ${ECR_REGISTRY}:${VERSION_REVISION}

## -
##   help - this message
.PHONY: help
help: Makefile
	@echo -e "Run command:\n    make <target>\n"
	@echo -e "Targets:\n"
	@grep -E -h '^## .*' $(MAKEFILE_LIST) | sed -n 's/^##//p'  | column -t -s '-' |  sed -e 's/^/ /'

