#版本檔案
LAST_APP_VERSION_FILE=APP_VERSION
BUILD_VERSION_FILE=BUILD

#版本變數
VERSION:=$(shell cat ../VERSION)
#打包起始版本 -1
INIT_BUILD_VERSION=999
BUILD_VERSION=$(shell echo $(shell cat $(BUILD_VERSION_FILE))+1 | bc)
export APP_VERSION=$(shell cat $(LAST_APP_VERSION_FILE))
#Git
GIT_CMD=git
GIT_BRANCH=$(GIT_CMD) branch
GIT_ADD=$(GIT_CMD) add
GIT_COMMIT=$(GIT_CMD) commit
GIT_PUSH=$(GIT_CMD) push -f
GIT_CURRENT_BRANCH=$$branch
GIT_TAG=$(GIT_CMD) tag
# Pure targets.
#.PHONY: all
all: check_version_file_is_exist check_version add_version write_tag_to_file
#初始化 build version 檔案
init_build_version:
	touch $(BUILD_VERSION_FILE)
	echo $(INIT_BUILD_VERSION) > $(BUILD_VERSION_FILE)
	echo "BUILD_VERSION = " BUILD_VERSION
#初始化 app version
init_app_version:
	touch $(LAST_APP_VERSION_FILE)
	echo $(VERSION) > $(LAST_APP_VERSION_FILE)

#檢查版本檔案是否存在
check_version_file_is_exist:
ifeq "$(wildcard $(BUILD_VERSION_FILE))" ""
	@make init_build_version
endif
ifeq "$(wildcard $(LAST_APP_VERSION_FILE))" ""
	@make init_app_version
endif

#檢查版本
check_version:
	@if [ $(shell cat $(LAST_APP_VERSION_FILE)) != $(VERSION) ]; then\
		make init_app_version;\
        make init_build_version;\
	fi
add_version:
	echo $(BUILD_VERSION) > $(BUILD_VERSION_FILE)
commit_record:
	$(GIT_ADD) $(LAST_APP_VERSION_FILE)
	$(GIT_ADD) $(BUILD_VERSION_FILE)
	$(GIT_COMMIT) -m "auto increment build version $(shell cat BUILD) [CI SKIP]"
	$(GIT_PUSH) origin HEAD:"$(GIT_CURRENT_BRANCH)"
add_tag:
	$(GIT_TAG) -a v$(shell cat APP_VERSION).$(shell cat BUILD) -m "auto increment build version v$(shell cat APP_VERSION).$(shell cat BUILD)"
	$(GIT_PUSH) origin v$(shell cat APP_VERSION).$(shell cat BUILD)
write_tag_to_file:
	echo "$(shell cat APP_VERSION).$(shell cat BUILD)" > ../.tags