# Makefile for Python Microservices Project

.PHONY: all build run clean docker-build docker-push k8s-deploy

# Define services
SERVICES = user-service-py product-service-py order-service-py notification-service-py

# Default Docker registry (change this to your own)
DOCKER_REGISTRY ?= your-docker-registry
DOCKER_IMAGE_TAG ?= latest

all: build docker-build

build:
	@echo "Building Python services..."
	@for service in $(SERVICES); do \
		echo "Building $$service..."; \
		pip install -r $$service/requirements.txt; \
	done
	@echo "Python services built."

run:
	@echo "Running Python services locally (requires separate terminals for each service)..."
	@echo "To run user-service-py: python user-service-py/app.py"
	@echo "To run product-service-py: python product-service-py/app.py"
	@echo "To run order-service-py: python order-service-py/app.py"
	@echo "To run notification-service-py: python notification-service-py/app.py"

clean:
	@echo "Cleaning Python services..."
	@find . -name "__pycache__" -exec rm -rf {} +
	@find . -name "*.pyc" -exec rm -f {} +
	@echo "Cleaned."

docker-build:
	@echo "Building Docker images for Python services..."
	@for service in $(SERVICES); do \
		echo "Building Docker image for $$service..."; \
		docker build -t $(DOCKER_REGISTRY)/$$service:$(DOCKER_IMAGE_TAG) $$service; \
	done
	@echo "Docker images built."

docker-push:
	@echo "Pushing Docker images for Python services..."
	@for service in $(SERVICES); do \
		echo "Pushing Docker image for $$service..."; \
		docker push $(DOCKER_REGISTRY)/$$service:$(DOCKER_IMAGE_TAG); \
	done
	@echo "Docker images pushed."

k8s-deploy:
	@echo "Deploying Python microservices to Kubernetes..."
	@for service in $(SERVICES); do \
		echo "Applying Kubernetes manifests for $$service..."; \
		kubectl apply -f $$service/kubernetes/deployment.yaml; \
		kubectl apply -f $$service/kubernetes/service.yaml; \
	done
	@echo "Deployment to Kubernetes complete."
