NAMESPACE ?= <PROJECT_CHANGE_ME>
PACKAGE := backend
SHELL := /bin/bash
REGISTRY := registry.halfakop.ru
REPOSITORY := $(NAMESPACE)/$(PACKAGE)

SOURCE_VERSION ?= $(shell cat VERSION)
SOURCE_COMMIT ?= $(shell git rev-parse --short=8 HEAD)
GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD | sed s,feature/,,g)

IMAGE_NAME_TAGGED = $(REPOSITORY):$(SOURCE_VERSION)
EXEC=$(PACKAGE).run

all: help

help:
	@echo "app - build the application"
	@echo "tests - run tests"
	@echo "run - run application locally"
	@echo "clean - clean build environment"

fix:
	@go fix ./...

app: fix
	@go build -o ./${EXEC} ./src

tests: build
	@go test ./...

run:
	@./${EXEC}

clean:
	@rm -rf ./${EXEC}%

release: title clean build login push

build:
	docker build --compress \
		-t $(IMAGE_NAME_TAGGED) \
		-t $(REGISTRY)/$(IMAGE_NAME_TAGGED) \
		--build-arg SOURCE_VERSION=$(SOURCE_VERSION) \
		--build-arg SOURCE_COMMIT=$(SOURCE_COMMIT) \
		${DOCKER_OPTS} \
		-f Dockerfile .

login:
	$(call check-var-defined,DOCKER_USERNAME)
	$(call check-var-defined,DOCKER_PASSWORD)
	@echo ${DOCKER_PASSWORD} | \
	docker login -u ${DOCKER_USERNAME} --password-stdin $(REGISTRY)

push:
	docker push $(REGISTRY)/$(IMAGE_NAME_TAGGED)

.PHONY: tests release build login push