.PHONY: build push deploy redeploy logs shell disk-usage clean-cache health-check help

# Use podman if docker is not available
DOCKER := $(shell which docker 2>/dev/null || which podman 2>/dev/null)

IMAGE_NAME=default-route-openshift-image-registry.apps.lab.apilab.us/clawdbox/clawdbox:latest
NAMESPACE=clawdbox
SSH_HOST=clawdbox.apps.lab.apilab.us
SSH_PORT=2222
SSH_USER=claw

help:
	@echo "ClawdBox Makefile - Common Operations"
	@echo ""
	@echo "Build & Deploy:"
	@echo "  make build        - Build Docker image"
	@echo "  make push         - Build and push image to registry"
	@echo "  make deploy       - Deploy all manifests to cluster"
	@echo "  make redeploy     - Push image and restart deployment"
	@echo ""
	@echo "Operations:"
	@echo "  make logs         - Stream pod logs"
	@echo "  make shell        - SSH into container"
	@echo "  make disk-usage   - Check /data disk usage"
	@echo "  make clean-cache  - Clear pip/npm caches"
	@echo "  make health-check - Run comprehensive health diagnostics"
	@echo ""
	@echo "Debugging:"
	@echo "  make describe     - Describe deployment"
	@echo "  make events       - Show namespace events"
	@echo "  make restart      - Restart deployment (without push)"

build:
	$(DOCKER) build -t $(IMAGE_NAME) .

push: build
	$(DOCKER) push $(IMAGE_NAME)

deploy:
	kubectl apply -f manifests/

redeploy: push
	kubectl rollout restart deployment/clawdbox -n $(NAMESPACE)
	@echo "Waiting for rollout to complete..."
	kubectl rollout status deployment/clawdbox -n $(NAMESPACE)

restart:
	kubectl rollout restart deployment/clawdbox -n $(NAMESPACE)
	kubectl rollout status deployment/clawdbox -n $(NAMESPACE)

logs:
	kubectl logs -f -n $(NAMESPACE) deployment/clawdbox

shell:
	ssh -p $(SSH_PORT) $(SSH_USER)@$(SSH_HOST)

disk-usage:
	@ssh -p $(SSH_PORT) $(SSH_USER)@$(SSH_HOST) "df -h /data && echo '' && echo 'Top 10 Largest Directories:' && du -h /data 2>/dev/null | sort -rh | head -10"

clean-cache:
	@ssh -p $(SSH_PORT) $(SSH_USER)@$(SSH_HOST) "rm -rf /data/.cache/pip/* /data/.cache/npm/* && echo 'Package caches cleared'"

health-check:
	@ssh -p $(SSH_PORT) $(SSH_USER)@$(SSH_HOST) "/data/scripts/health-check.sh"

describe:
	kubectl describe deployment/clawdbox -n $(NAMESPACE)

events:
	kubectl get events -n $(NAMESPACE) --sort-by='.lastTimestamp'

status:
	@echo "=== Deployment Status ==="
	@kubectl get deployment -n $(NAMESPACE)
	@echo ""
	@echo "=== Pod Status ==="
	@kubectl get pods -n $(NAMESPACE)
	@echo ""
	@echo "=== Service Status ==="
	@kubectl get svc -n $(NAMESPACE)
	@echo ""
	@echo "=== Route Status ==="
	@kubectl get route -n $(NAMESPACE) 2>/dev/null || echo "No routes found (not on OpenShift?)"
