export REGISTRO=harbor.reymota.es\/jugaralpadel
export NAMESPACE = jugaralpadel
VERSION_FILE = .version

# Get current version or default to alpine-1
IMG_VERSION := $(shell cat $(VERSION_FILE) 2>/dev/null || echo "alpine-1")
# Get built version for deployment targets
BUILT_VERSION := $(shell cat .current_version 2>/dev/null || echo "$(IMG_VERSION)")
export IMG_VERSION

help:
	@echo ""
	@echo "Comandos disponibles:"
	@echo ""
	@grep "^[[:lower:]]" Makefile | grep -v "^\." | grep "##" | awk -F':.*## ' '{printf "  \033[1m%-20s\033[0m %s\n", $$1, $$2}'
	@echo ""

all: imagen clean install ## Crea todo (excepto las claims)

imagen: ## Crea la imagen
	@echo "Building image with version: $(IMG_VERSION)"
	@# Store current version for other targets to use
	@echo "$(IMG_VERSION)" > .current_version
	cd ../; make
	@# Increment version for next build
	@echo "$(IMG_VERSION)" | sed 's/alpine-\([0-9]*\)/alpine-\1/' | awk -F'-' '{print "alpine-" $$2+1}' > $(VERSION_FILE)
	@echo "Next version will be: $$(cat $(VERSION_FILE))"


ns: ## Crea el namespace
	-cat namespace.yaml | sed -e "s/<NS>/${NAMESPACE}/" |kubectl create -f -

install: ## Instala todo (excepto las claims)
	-cat reg-secret.yaml| sed -e "s/<NS>/${NAMESPACE}/" | kubectl create -f -
	-cat env-prod-configmap.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl create -f -

	-cat jugaralpadel-deployment.yaml | sed -e "s/<NS>/${NAMESPACE}/" | sed -e "s/<TAG>/${BUILT_VERSION}/" | sed -e "s/<REGISTRO>/${REGISTRO}/" | kubectl create -f -
	-cat jugaralpadel-ingress.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl create -f -

clean: ## Borra todo (excepto las claims)
	-cat jugaralpadel-ingress.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl delete -f -
	-cat jugaralpadel-deployment.yaml | sed -e "s/<NS>/${NAMESPACE}/" | sed -e "s/<TAG>/${BUILT_VERSION}/" | sed -e "s/<REGISTRO>/${REGISTRO}/" | kubectl delete -f -

	-cat env-prod-configmap.yaml  | sed -e "s/<NS>/${NAMESPACE}/" | kubectl delete -f -
	-cat reg-secret.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl delete -f -

service: ## Crea el servicio con NodePort
	-cat jugaralpadel-service.yaml| sed -e "s/<NS>/${NAMESPACE}/" | kubectl create -f -

servicelb: ## Crea el servicio con LoadBalancer
	-cat jugaralpadel-service-lb.yaml| sed -e "s/<NS>/${NAMESPACE}/" | kubectl create -f -

borraclaims: ## Borra las claims
	-cat pvc-jugaralpadel.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl delete -f -
	-cat pvc-static.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl delete -f -

claims: ## Crea las claims
	-cat pvc-jugaralpadel.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl create -f -
	-cat pvc-static.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl create -f -

app: ## Despliega la app
	-cat jugaralpadel-deployment.yaml | sed -e "s/<NS>/${NAMESPACE}/" | sed -e "s/<TAG>/${BUILT_VERSION}/" | sed -e "s/<REGISTRO>/${REGISTRO}/" | kubectl delete -f -
	-cat jugaralpadel-deployment.yaml | sed -e "s/<NS>/${NAMESPACE}/" | sed -e "s/<TAG>/${BUILT_VERSION}/" | sed -e "s/<REGISTRO>/${REGISTRO}/" | kubectl create -f -

db: ## Crea la base de datos en el cluster
	-kubectl create -f jugaralpadel-db.yaml
