.PHONY: build clean publish

build:
	@echo "Generating Python gRPC stubs..."
	@python3 scripts/generate_stubs.py

clean:
	@echo "Cleaning generated stubs..."
	@find nexus_proto/generated -type f -name "*_pb2*.py" -delete
	@echo "Done."

publish:
	@echo "╔════════════════════════════════════════════════════════════════╗"
	@echo "║                    PUBLISH WORKFLOW                           ║"
	@echo "╚════════════════════════════════════════════════════════════════╝"
	@echo ""
	@echo "Step 1: Checking for uncommitted changes..."
	@if [ -n "$$(git status --porcelain)" ]; then \
		echo "❌ Error: You have uncommitted changes!"; \
		echo "Please commit or stash your changes before publishing."; \
		exit 1; \
	fi
	@echo "✓ No uncommitted changes"
	@echo ""
	@echo "Step 2: Regenerating stubs to ensure they're up-to-date..."
	@python3 scripts/generate_stubs.py
	@echo "✓ Stubs regenerated"
	@echo ""
	@CURRENT_VERSION=$$(grep 'version = ' pyproject.toml | head -1 | sed 's/version = "//;s/"//'); \
	echo "Current version: $$CURRENT_VERSION"; \
	echo ""; \
	echo "Enter new version (e.g., 0.11.0):"; \
	read NEW_VERSION; \
	echo ""; \
	echo "Updating version to $$NEW_VERSION..."; \
	sed -i "s/version = \".*\"/version = \"$$NEW_VERSION\"/" pyproject.toml; \
	sed -i "s/\"version\": \".*\"/\"version\": \"$$NEW_VERSION\"/" package.json; \
	sed -i "s/__version__ = \".*\"/__version__ = \"$$NEW_VERSION\"/" nexus_proto/__init__.py; \
	echo "✓ Version updated"; \
	echo ""; \
	echo "Committing and tagging..."; \
	git add pyproject.toml package.json nexus_proto/__init__.py nexus_proto/generated/; \
	git commit -m "Bump version to $$NEW_VERSION"; \
	git tag v$$NEW_VERSION; \
	echo "✓ Committed and tagged"; \
	echo ""; \
	echo "Pushing to remote..."; \
	git push origin main; \
	git push origin v$$NEW_VERSION; \
	echo "✓ Pushed"; \
	echo ""; \
	echo "╔════════════════════════════════════════════════════════════════╗"; \
	echo "║                    ✅ PUBLISH COMPLETE!                       ║"; \
	echo "╚════════════════════════════════════════════════════════════════╝"; \
	echo ""; \
	echo "Version $$NEW_VERSION published!"; \
	echo "GitHub Actions will publish to npm and PyPI."; \
	echo ""

.DEFAULT_GOAL := build

