VERSION := $(shell yq -r '.version' galaxy.yml)
NS := $(shell yq -r '.namespace' galaxy.yml)
NAME := $(shell yq -r '.name' galaxy.yml)
ARCHIVE := $(NS)-$(NAME)-$(VERSION).tar.gz
LATEST_TAG := $(shell git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0")

.PHONY: build install publish clean tag release

build:
	rm -f $(NS)-$(NAME)-*.tar.gz
	ansible-galaxy collection build
	@echo "Created $(ARCHIVE)"

tag:
	git tag -f v$(VERSION) -m "v$(VERSION)"
	git push origin v$(VERSION) --force

install: build
	ansible-galaxy collection install $(ARCHIVE) --force

publish: build tag
	@ansible-galaxy collection publish $(ARCHIVE) --token "$$(cat ~/.ansible/galaxy/token 2>/dev/null || echo $(GALAXY_TOKEN))"

release:
	@# Check version in galaxy.yml is greater than latest tag
	@if [ "$(LATEST_TAG)" != "v0.0.0" ]; then \
		LATEST=$(subst v,,$(LATEST_TAG)); \
		if [ "$(VERSION)" = "$$LATEST" ]; then \
			echo "ERROR: Version $(VERSION) is the same as $(LATEST_TAG)"; \
			exit 1; \
		fi; \
	fi
	@# Check changelog contains version
	@if ! grep -q "$(VERSION)" CHANGELOG.md; then \
		echo "ERROR: Version $(VERSION) not found in CHANGELOG.md"; \
		exit 1; \
	fi
	git add .
	git commit -m "v$(VERSION)"
	git tag v$(VERSION)
	git push origin main --tags
	@echo "Release v$(VERSION) pushed — CI will publish to Galaxy"

clean:
	rm -f $(NS)-$(NAME)-*.tar.gz
