MANDATORY-helm = K8S_CONTEXT HELM_CHART_NAME HELM_CHART_PATH HELM_VALUES_FILE NAMESPACE
# helm
#
# deploys helm charts on k8s via helm
#
start-helm:
	@- echo "\n### starting deployment with helm"
	@- echo "\n### setting kubernetes context to $(K8S_CONTEXT)"
	@ kubectl config use-context $(K8S_CONTEXT)

ifdef TEST_MODE
	@- echo "Testing chart with 'helm template --debug'"
	@ envsubst < ${HELM_VALUES_FILE} | helm template ${HELM_CHART_NAME} ${HELM_CHART_PATH} --debug --values -
endif

ifdef NAMESPACE
	@ $(eval K8S_NAMESPACE = $(NAMESPACE))
endif

ifdef HELM_REPO_URL
	@- echo "Helm Repo: $(HELM_REPO_URL)"
	@ helm repo add $(HELM_CHART_NAME) $(HELM_REPO_URL)
	@- helm repo update $(HELM_CHART_NAME)
endif

ifdef DEBUG_MODE
	@- echo "\n### deploying helm chart with --debug flag"
	@- echo "-- DEBUG DEPLOYMENT --------------------"
	@- echo " "
	@- echo "Namespace: $(K8S_NAMESPACE)"
	@- echo "Helm Chart: $(HELM_CHART_PATH)"
	@- echo "Helm Version (use latest if empty): $(HELM_CHART_VERSION)"
	@- echo "Values File: $(HELM_VALUES_FILE)"
	@- echo " "
	@- echo "----------------------------------"

	@ envsubst < $(HELM_VALUES_FILE) | helm upgrade $(HELM_CHART_NAME) $(HELM_CHART_PATH) -n $(K8S_NAMESPACE) --install --debug --wait --values - --version "$(HELM_CHART_VERSION)"

else
	
	@- echo "\n### deploying helm chart"
	@- echo "-- DEPLOYMENT --------------------"
	@- echo " "
	@- echo "Namespace: $(K8S_NAMESPACE)"
	@- echo "Helm Chart: $(HELM_CHART_PATH)"
	@- echo "Helm Version (use latest if empty): $(HELM_CHART_VERSION)"
	@- echo "Values File: $(HELM_VALUES_FILE)"
	@- echo " "
	@- echo "----------------------------------"

	@ envsubst < $(HELM_VALUES_FILE) | helm upgrade $(HELM_CHART_NAME) $(HELM_CHART_PATH) -n $(K8S_NAMESPACE) --install --wait --values - --version "$(HELM_CHART_VERSION)"

endif


pull-helm:
# nop