#!/bin/make -e
releaser?=ya tool releaser
dctl=ya tool dctl
yamake_prep=devtools/yamake_prep/yamake_prep

languages := ar,az,be,bg,cs,de,el,en,es-la,et,fi,fr,he,hu,hy,id,it,ja,ka,kk,ky,lt,lv,no,pl,pt,pt-br,ro,ru,sk,sl,sr,tg,tr,uk,uz,vi,zh-hans,zh-hant

i ?= forms_ext forms_int forms_biz
e ?= testing
c ?= 
flags ?=

ifdef v
version := -v $(v)
else
version :=
endif

ifdef e
environment := -e $(e)
else
environment :=
endif

ifdef c
component := -c $(c)
component_ext := -c $(c)
else
component := -c backend,celery-worker,celery-beat
component_ext := -c backend,celery-worker,celery-beat,admin
endif

ifdef nochangelog
init_method := dont_change_version
else
init_method := change_version
endif

.DEFAULT_GOAL := release
.PHONY: ya build push release tests package ssh tanker

po_files := $(shell find src/ -name '*.po')
mo_files := $(po_files:.po=.mo)

%.mo: %.po
	msgfmt $< -o $@

ya: $(mo_files)
	cd devtools && ya make && cd ..
	$(yamake_prep) src/ya.make.template src/ya.make
	$(yamake_prep) tests/ya.make.template tests/ya.make
	$(yamake_prep) micro/core/src/ya.make.template micro/core/src/ya.make
	$(yamake_prep) micro/core/tests/ya.make.template micro/core/tests/ya.make
	$(yamake_prep) micro/simple/src/ya.make.template micro/simple/src/ya.make
	$(yamake_prep) micro/simple/tests/ya.make.template micro/simple/tests/ya.make

dont_change_version:
	@echo do not change version

change_version:
	$(releaser) release-changelog $(version) $(flags)

init: ya $(init_method)

package:
	$(eval v := $(shell head -n1 changelog.md))
	ya package ./docker-package.json --docker --docker-repository=tools --docker-build-arg="APP_VERSION=${v}" --custom-version=${v} --docker-push

forms_ext:
	$(releaser) deploy $(version) -e forms_ext-$(e) $(component_ext) $(flags)

forms_int:
	$(releaser) deploy $(version) -e forms_int-$(e) $(component) $(flags)

forms_biz:
	$(releaser) deploy $(version) -e forms_biz-$(e) $(component) $(flags); \
	if [ $(e) = 'testing' ]; then \
	    $(releaser) deploy $(version) -e forms_biz-preprod $(component) $(flags); \
	fi

deploy: $(i)

release: init package deploy

ssh: 
	releaser ssh --deploy -e $(i)-$(e) -c console

tests: ya
	cd tests
	ya make -A

tanker:
	scripts/po2tanker.py -p forms_backend -k django -s src -o src/events/locale -l $(languages)

lint:
	ya test -A --style
