#**************************************************************
# Service Makefile
#**************************************************************

# Docker Naming Definitions **THIS MUST ALIGN WITH EVERYTHING ELSE**
IMAGE_NAME := messaging-proto/source
SUB_HASH := $$(git log -1 --pretty=%H)

# Define location and names of env config files
SERVICE_CONFIG_DIR := ./config
SERVICE_CONFIG_FILES := $(wildcard $(SERVICE_CONFIG_DIR)/*.env)

# Local Build Scratch Dir
OUT_DIR := out
VPATH := $(OUT_DIR)

# Vendored artifacts
VENDOR_DIR := vendor

.DELETE_ON_ERROR:

all: build
.PHONY: all

# Create out dir
$(OUT_DIR):
	mkdir -p $(@)

vendor: ../../Gopkg.lock
	@echo "[INFO] Copying vendor directories"
	rm -rf $(VENDOR_DIR)
	mkdir -p $(VENDOR_DIR)/code.justin.tv/devhub/e2ml/libs
	cp -r ../../$(VENDOR_DIR) .
	cp -r ../../libs $(VENDOR_DIR)/code.justin.tv/devhub/e2ml

build: vendor Dockerfile $(ENV_CONFIG) $(SERVICE_CONFIG_FILES) | $(OUT_DIR)
	@echo "[INFO] Building Docker Image: [$(IMAGE_NAME)]"
	docker build --pull --rm -t $(IMAGE_NAME):$(SUB_HASH) . | tee $(OUT_DIR)/$(@)

clean:
	-@rm -f $(OUT_DIR)/*
	@rm -rf $(VENDOR_DIR)
.PHONY: clean

run: build
	@echo "[INFO] Running shell in local container using image: [$(IMAGE_NAME)]"
	docker run --rm -ti $(IMAGE_NAME):$(SUB_HASH) ash
.PHONY: run
