SHELL := /usr/bin/env bash
.DEFAULT_GOAL := help

GITEA_RELEASE ?= gitea
GITEA_NAMESPACE ?= default
GITEA_CHART ?= gitea-charts/gitea
GITEA_VALUES ?= helm/gitea-values.sops.yaml
GITEA_REGISTRY_VALUES ?= helm/gitea-registry-values.yaml
GITEA_INGRESS ?= manifests/gitea-ingress.yaml

VERGABE_RELEASE   ?= vergabe-teilnahme
VERGABE_NAMESPACE ?= vergabe-teilnahme
VERGABE_CHART     ?= charts/vergabe-teilnahme
VERGABE_VALUES    ?= helm/vergabe-teilnahme-values.yaml
VERGABE_INGRESS   ?= manifests/vergabe-teilnahme-ingress.yaml

##@ Gitea

gitea-deploy: ## Deploy / upgrade Gitea (S5 workload)
	helm upgrade --install $(GITEA_RELEASE) $(GITEA_CHART) \
		-f <(sops -d $(GITEA_VALUES)) \
		-f $(GITEA_REGISTRY_VALUES) \
		--namespace $(GITEA_NAMESPACE) --create-namespace

gitea-ingress-deploy: ## Apply the Gitea OCI registry ingress
	kubectl apply -f $(GITEA_INGRESS)

gitea-status: ## Check Gitea health
	kubectl get pods -n $(GITEA_NAMESPACE) -l app.kubernetes.io/instance=$(GITEA_RELEASE)
	kubectl get svc -n $(GITEA_NAMESPACE) $(GITEA_RELEASE)
	kubectl get ingress -n $(GITEA_NAMESPACE) $(GITEA_RELEASE) --ignore-not-found
	kubectl cnpg status gitea-db -n databases

##@ Vergabe Teilnahme

vergabe-dry-run: ## helm template render (no apply) for inspection
	helm template $(VERGABE_RELEASE) $(VERGABE_CHART) \
		--namespace $(VERGABE_NAMESPACE) \
		-f $(VERGABE_VALUES)

vergabe-deploy: ## Deploy / upgrade vergabe-teilnahme Helm release
	helm upgrade --install $(VERGABE_RELEASE) $(VERGABE_CHART) \
		--namespace $(VERGABE_NAMESPACE) --create-namespace \
		-f $(VERGABE_VALUES) --wait --timeout 3m

vergabe-ingress-deploy: ## Apply the vergabe-teilnahme ingress (whywhynot.de)
	kubectl apply -f $(VERGABE_INGRESS)

vergabe-status: ## Show vergabe-teilnahme pod / svc / ingress / cert state
	kubectl get pods,svc,ingress,certificate -n $(VERGABE_NAMESPACE) -l app.kubernetes.io/instance=$(VERGABE_RELEASE) --ignore-not-found

vergabe-migrate: ## Run Django migrations against the live deployment
	kubectl exec -n $(VERGABE_NAMESPACE) deploy/$(VERGABE_RELEASE) -- python manage.py migrate --noinput

vergabe-seed: ## Run the idempotent seed command
	kubectl exec -n $(VERGABE_NAMESPACE) deploy/$(VERGABE_RELEASE) -- python manage.py seed_dev

vergabe-superuser: ## Open an interactive shell for createsuperuser
	kubectl exec -it -n $(VERGABE_NAMESPACE) deploy/$(VERGABE_RELEASE) -- python manage.py createsuperuser

vergabe-logs: ## Tail vergabe-teilnahme app logs
	kubectl logs -n $(VERGABE_NAMESPACE) -l app.kubernetes.io/instance=$(VERGABE_RELEASE) -f --tail=50

##@ Help

help: ## Show this help
	@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n  make \033[36m<target>\033[0m\n"} \
	  /^[a-zA-Z_-]+:.*?##/ { printf "  \033[36m%-20s\033[0m %s\n", $$1, $$2 } \
	  /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) }' $(MAKEFILE_LIST)

.PHONY: gitea-deploy gitea-ingress-deploy gitea-status vergabe-dry-run vergabe-deploy vergabe-ingress-deploy vergabe-status vergabe-migrate vergabe-seed vergabe-superuser vergabe-logs help
