all: run

name :=  rawb/services/ettapi
version := $(shell cat ./version.txt)
registry := registry2.24hr.se

public-registry := 24hrservice
public-name := ettapi

npm-publish: build-javascript
	npm publish --access public

build-javascript: 
	npm run build

image:
	$(call blue, "Building docker image...")
	docker build --build-arg VERSION="${version}" --rm=true -t ${name}:${version} -f Dockerfile.prod .
	$(MAKE) clean

ci:
	$(call blue, "Building and pushing docker image for multi-architecure")
	multi-builder --build-arg VERSION="${version}" --rm=true \
	-t ${registry}/${name}:${version} \
	-t ${registry}/${name}:latest \
	-t ${public-registry}/${public-name}:${version} \
	-t ${public-registry}/${public-name}:latest \
	--push \
	-f Dockerfile.prod .

run: image
	$(call blue, "Running Docker image locally...")
	docker run -i -t --rm -p 8080:80 ${name}:${version} 

publish: image
	$(call blue, "Publishing Docker image to registry...")
	docker tag ${name}:${version} ${registry}/${name}:${version}
	docker push ${registry}/${name}:${version} 

publish-latest: image publish
	$(call blue, "Publishing latest image to registry...")
	docker tag ${name}:${version} ${registry}/${name}:latest
	docker push ${registry}/${name}:latest

publish-public: image
	$(call blue, "Publishing Docker image to registry...")
	docker tag ${name}:${version} ${public-registry}/${public-name}:${version}
	docker push ${public-registry}/${public-name}:${version} 

publish-public-latest: image
	$(call blue, "Publishing latest image to registry...")
	docker tag ${name}:${version} ${public-registry}/${public-name}:latest
	docker push ${public-registry}/${public-name}:latest

clean: 
	@rm -f app 

define blue
	@tput setaf 6
	@echo $1
	@tput sgr0
endef
