# Makefile for MerchantsOfHope.org deployment

.PHONY: help build docker-build docker-push deploy undeploy helm-install helm-uninstall k8s-apply k8s-delete test

# Default target
help:
	@echo "Usage: make [target]"
	@echo ""
	@echo "Targets:"
	@echo "  help            Show this help message"
	@echo "  build           Build the application"
	@echo "  docker-build    Build the Docker image"
	@echo "  docker-push     Push the Docker image to registry"
	@echo "  deploy          Deploy to Kubernetes using manifests"
	@echo "  undeploy        Remove deployment from Kubernetes"
	@echo "  helm-install    Install using Helm"
	@echo "  helm-uninstall  Uninstall using Helm"
	@echo "  k8s-apply       Apply Kubernetes manifests"
	@echo "  k8s-delete      Delete Kubernetes resources"
	@echo "  test            Run tests"

# Build the application
build:
	composer install --no-dev --optimize-autoloader

# Build Docker image
docker-build:
	docker build -t qwen-hack-moh:latest .

# Push Docker image to registry
docker-push:
	docker tag qwen-hack-moh:latest qwen-hack-moh:$(shell git rev-parse --short HEAD)
	docker push qwen-hack-moh:$(shell git rev-parse --short HEAD)
	docker push qwen-hack-moh:latest

# Deploy using kubectl
deploy: k8s-apply

# Remove deployment
undeploy: k8s-delete

# Install using Helm
helm-install:
	helm install moh-app ./helm/moh-app --namespace merchantsofhope --create-namespace

# Uninstall using Helm
helm-uninstall:
	helm uninstall moh-app --namespace merchantsofhope

# Apply Kubernetes manifests
k8s-apply:
	kubectl apply -f k8s/namespace.yaml
	kubectl apply -f k8s/configmap.yaml
	kubectl apply -f k8s/secrets.yaml
	kubectl apply -f k8s/service.yaml
	kubectl apply -f k8s/deployment.yaml
	kubectl apply -f k8s/ingress.yaml

# Delete Kubernetes resources
k8s-delete:
	kubectl delete -f k8s/ingress.yaml
	kubectl delete -f k8s/deployment.yaml
	kubectl delete -f k8s/service.yaml
	kubectl delete -f k8s/secrets.yaml
	kubectl delete -f k8s/configmap.yaml
	kubectl delete -f k8s/namespace.yaml

# Run tests
test:
	vendor/bin/phpunit