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 .
	docker run -t $(TAGGED_IMAGE_URL) python -m isort --profile black --check-only .
	docker run -t $(TAGGED_IMAGE_URL) find . -regex '^.*\/octarine_[^\/\.]*' -exec mypy {} \;

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

.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/


SRC_DIR := $(CURRENT_DIR)/octarine/clients/TwitchVXModelRegistryTwirp
MODEL_REGISTRY_PROTO_PREFIX := model_registry_

.PHONY: generate
generate:
	mkdir -p $(SRC_DIR)/protobuf
	for f in $(notdir $(wildcard $(CURRENT_DIR)/submodule/TwitchVXModelRegistryLambdaSchema/*.proto)); do cp -- $(CURRENT_DIR)/submodule/TwitchVXModelRegistryLambdaSchema/$$f $(SRC_DIR)/protobuf/$(MODEL_REGISTRY_PROTO_PREFIX)$$f; done
	protoc -I $(SRC_DIR)/protobuf --python_out $(SRC_DIR) --twirp_python_fultonlambda_out $(SRC_DIR) $(SRC_DIR)/protobuf/$(MODEL_REGISTRY_PROTO_PREFIX)twirp.proto
	for f in $(filter-out twirp.proto, $(notdir $(wildcard $(CURRENT_DIR)/submodule/TwitchVXModelRegistryLambdaSchema/*.proto))); do protoc -I $(SRC_DIR)/protobuf --python_out $(SRC_DIR) $(SRC_DIR)/protobuf/$(MODEL_REGISTRY_PROTO_PREFIX)$$f; done
	rm -fr $(SRC_DIR)/protobuf
