SHELL := /bin/bash
CURRENT_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
GIT_COMMIT := $(shell $(CURRENT_DIR)/scripts/ci/git_commit)

IMAGE_NAME := liverecs/octarine
DOCKER_REGISTRY_URL := docker.pkgs.xarth.tv/$(IMAGE_NAME)
TAGGED_IMAGE_URL=$(DOCKER_REGISTRY_URL):$(GIT_COMMIT)

.PHONY: deploy
deploy:
	$(CURRENT_DIR)/scripts/ci/deploy $(TAGGED_IMAGE_URL)

.PHONY: build
build:
	$(CURRENT_DIR)/scripts/ci/build $(TAGGED_IMAGE_URL)

.PHONY: push
push:
	docker push $(TAGGED_IMAGE_URL)

.PHONY: tag
tag:
	$(CURRENT_DIR)/scripts/ci/git_tag

.PHONY: lint-check
lint-check: 
	docker build -t $(TAGGED_IMAGE_URL) .
	docker run -t $(TAGGED_IMAGE_URL) python -m black --check octarine
	docker run -t $(TAGGED_IMAGE_URL) python -m isort --profile black --check-only octarine
	docker run -t $(TAGGED_IMAGE_URL) find . -regex '^.*\/octarine_[^\/\.]*' -exec mypy {} \;
	docker run -t $(TAGGED_IMAGE_URL) pylint octarine --init-hook='import sys; sys.path.append("/TwitchVXModelRegistryUtils")'

.PHONY: lint
lint:
	python -m black octarine 
	python -m isort --profile black octarine
	find $(CURRENT_DIR) -regex '^.*\/octarine_[^\/\.]*' -exec mypy {} \;
	pylint octarine

.PHONY: clean
clean:
	-find . -regex '.*egg-info' -exec rm -rf {} \; > /dev/null
	-find . -regex '.*eggs' -exec rm -rf {} \; > /dev/null
	-find . -regex '.*octarine.*__pycache__' -exec rm -rf {} \; > /dev/null
	-rm -rf dist/ build/

.PHONY: jenkins-test
jenkins-test: 
	$(eval creds := $(shell AWS_STS_REGIONAL_ENDPOINTS=regional aws sts assume-role \
		--output text \
		--role-arn arn:aws:iam::830245545714:role/TwitchVXModelRegistryLamb-IntegrationTestingJenkin-1IANP9XPFYYOI \
		--role-session-name utility_package_test_session \
		--query 'Credentials.{A:AccessKeyId,S:SecretAccessKey,ST:SessionToken}' || echo ERROR))
	$(if $(filter-out $(creds),ERROR), ,$(error assuming a role failed))

	$(eval aws_access_key_id := $(word 1,$(creds)))
	$(eval aws_secret_access_key := $(word 2,$(creds)))
	$(eval aws_session_token := $(word 3,$(creds)))
	docker build -t $(TAGGED_IMAGE_URL) .
	docker run -t --rm \
		-e "AWS_ACCESS_KEY_ID=$(aws_access_key_id)" \
		-e "AWS_SECRET_ACCESS_KEY=$(aws_secret_access_key)" \
		-e "AWS_SESSION_TOKEN=$(aws_session_token)" \
		$(TAGGED_IMAGE_URL) python -m pytest -s octarine/utils/TwitchVXModelRegistryUtils
