VERSION_FILE := VERSION.txt

ifeq ($(wildcard $(VERSION_FILE)),)
  $(shell bash ./generate_version.sh $VERSION_FILE)
endif

REX_VERSION := $(shell cat $(VERSION_FILE))
RELEASE_NAME := rexforge_$(REX_VERSION)
export REX_VERSION

help:
	@echo -e "Makefile for $(RELEASE_NAME)\n"
	@echo "Available targets:"
	@echo "  release    - Create a release version and package"
	@echo "  clean      - Clean up build files"
	@echo "  container  - Build an OCI container (requires podman)"
	@echo "  help       - Show this help message"

release: $(RELEASE_NAME)
	make -C ./rex_client REX_VERSION=$(REX_VERSION)
	make -C ./rex_server REX_VERSION=$(REX_VERSION)
	mv ./rex_client/rexclient $(RELEASE_NAME)
	mv ./rex_server/rexserver $(RELEASE_NAME)
	cp ./LICENSE.txt $(RELEASE_NAME)
	cp ./README.md $(RELEASE_NAME)
	mkdir -p $(RELEASE_NAME)/source
	cp ./VERSION.txt $(RELEASE_NAME)/source
	git ls-files | xargs -I{} cp --parents {} $(RELEASE_NAME)/source
	date -I > $(RELEASE_NAME)/INFO.txt
	echo $(REX_VERSION) >> $(RELEASE_NAME)/INFO.txt
	go version >> $(RELEASE_NAME)/INFO.txt
	tar cvzf $(RELEASE_NAME).tar.gz $(RELEASE_NAME)

$(RELEASE_NAME):
	mkdir -p $@

container:
	podman build -t rexserver -f container/Containerfile .

clean:
	make -C ./rex_client clean
	make -C ./rex_server clean
	rm -rf *.tar.gz
	rm -rf rexforge_*

.PHONY: release clean container help