# OpenMetadata Kubernetes Operator Makefile

# Variables
IMAGE_NAME ?= docker.getcollate.io/openmetadata/omjob-operator
VERSION ?= 1.12.0-SNAPSHOT
JAR_FILE = target/openmetadata-k8s-operator-$(VERSION)-boot.jar

# Default target
.PHONY: help
help:
	@echo "Available targets:"
	@echo "  compile     - Compile the operator"
	@echo "  test        - Run unit tests"
	@echo "  package     - Build fat JAR"
	@echo "  docker      - Build Docker image"
	@echo "  push        - Push Docker image to registry"
	@echo "  clean       - Clean build artifacts"
	@echo "  run-local   - Run operator locally"

# Build targets
.PHONY: compile
compile:
	cd .. && mvn compile -pl openmetadata-k8s-operator

.PHONY: test
test:
	cd .. && mvn test -pl openmetadata-k8s-operator

.PHONY: package
package:
	cd .. && mvn package -pl openmetadata-k8s-operator

# Docker targets
.PHONY: docker
docker: package
	@echo "Building Docker image: $(IMAGE_NAME):$(VERSION)"
	docker build -t $(IMAGE_NAME):$(VERSION) .
	docker tag $(IMAGE_NAME):$(VERSION) $(IMAGE_NAME):latest

.PHONY: push
push:
	@echo "Pushing Docker image: $(IMAGE_NAME):$(VERSION)"
	docker push $(IMAGE_NAME):$(VERSION)
	docker push $(IMAGE_NAME):latest

# Development targets
.PHONY: run-local
run-local: package
	@echo "Running operator locally..."
	java -jar $(JAR_FILE)

.PHONY: clean
clean:
	cd .. && mvn clean -pl openmetadata-k8s-operator
	docker rmi $(IMAGE_NAME):$(VERSION) $(IMAGE_NAME):latest 2>/dev/null || true

# Integration targets
.PHONY: verify
verify: test
	@echo "Running additional verification..."
	cd .. && mvn verify -pl openmetadata-k8s-operator

# Development convenience
.PHONY: dev
dev: clean compile test
	@echo "Development build complete"