export MAIN_TRUNC=no
LOCAL_BUILD=1
FINAL_VERSION=latest
GET_VERSION_DEP=

.PHONY: test test_coverage test_ci lint lint_ci dep fmt build build_scanfeeder build_ci apply_git_hooks postclone precommit clean build_docker_image docker_image_ci help get_version get_build_date

export TEST_BINARY_NAME=vsix_runtime_check
export NAME_REPO="default/vsix_runtime_check"

test: check-tests-docker-image build_docker_image get_version ## Run unittests
	@docker run --rm -it -v ${TESTS_PATH}:/tests:ro -v ${TEST_BINARY_PATH}:/tests_binary -e DST_USER_ID=$(shell id -u) -e DST_GROUP_ID=$(shell id -g) -e TEST_BINARY_NAME=${TEST_BINARY_NAME} --name vsix_runtime_check-test  plugin-tests > /dev/null
	@VSIX_RUNTIME_CHECK_VER=${FINAL_VERSION} ${TEST_BINARY_PATH}/${TEST_BINARY_NAME} -test.v

test_coverage: ## Run unittests with calculating code coverage
	@echo "TODO"

test_ci: ## Run unittests as CI
	@docker run --rm -it -v ${TESTS_PATH}:/tests:ro -v ${TEST_BINARY_PATH}:/tests_binary -e DST_USER_ID=$(shell id -u) -e DST_GROUP_ID=$(shell id -g) -e TEST_BINARY_NAME=${TEST_BINARY_NAME} --name vsix_runtime_check-test  plugin-tests > /dev/null
	@VSIX_RUNTIME_CHECK_VER=${VSIX_RUNTIME_CHECK_VER} ${TEST_BINARY_PATH}/${TEST_BINARY_NAME} -test.v

lint: ## Lint the files
ifeq (yes,${MAIN_TRUNC})
	@(cd tests && $(LINTER) short)
else
	@echo "TODO"
endif

lint_ci: ## Lint the files as CI
ifeq (yes,${MAIN_TRUNC})
	@(cd tests && $(LINTER) full)
else
	@echo "TODO"
endif

dep: ## Get the dependencies
	@echo "TODO"

fmt: ## Format source code
ifeq (yes,${MAIN_TRUNC})
	@$(FORMATTER)
else
	@echo "TODO"
endif

build: ## Build the binary file from src
	@echo "TODO"

build_scanfeeder: ## Build the scanfeeder binary file from src and copy it to tools folder
ifeq (yes,${MAIN_TRUNC})
	$(MAKE) -C $(ROOT_DIR)/tools/scanfeeder build
	@cp $(ROOT_DIR)/tools/scanfeeder/scanfeeder ./scanfeeder
else
ifeq (yes,$(shell test -f scanfeeder && echo -n yes))
	@echo "Using existing scanfeeder"
else
	@echo "#!/bin/bash" > ./scanfeeder
	@chmod +x ./scanfeeder
endif
endif

build_ci: ## Build the binary file from src as CI
	@echo "TODO"

apply_git_hooks: ## copy git hooks to .git folder
	@echo "TODO"

postclone: apply_git_hooks dep ## Post clone actions

clean: ## Remove previous build
	@echo "TODO"

build_docker_image: build_scanfeeder $(GET_VERSION_DEP) get_build_date ## Build local docker image
	@docker build --build-arg DST_USER_ID=$(shell id -u) --build-arg DST_GROUP_ID=$(shell id -g) \
		--build-arg LOCAL_BUILD=$(LOCAL_BUILD) --build-arg RELEASE_VERSION="$(FINAL_VERSION)" \
		--build-arg BUILD_DATE="$(BUILD_DATE)" -t vsix_runtime_check:$(FINAL_VERSION) .

docker_image_ci: build_scanfeeder ## Build and push docker image from ci
	@docker build -t vsix_runtime_check .
	@echo "TODO push docker images"

git-submodules-update:
	@git submodule sync --recursive
	@git submodule update --init --remote --recursive

help: ## Display this help screen
	@grep -hE '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
