Compare commits

...

2 commits

Author SHA1 Message Date
Imbus
e7596e41f7 Makefile-fu 2025-01-28 11:17:46 +01:00
Imbus
b8913618f4 An excuse for versioning for now 2025-01-28 11:08:52 +01:00
3 changed files with 55 additions and 15 deletions

1
.gitignore vendored
View file

@ -4,3 +4,4 @@ rexserver
*.tar.gz
*.zip
/rexforge_*
VERSION.txt

View file

@ -1,21 +1,38 @@
rev := $(shell git rev-parse --short HEAD)
release_name := rexforge_$(rev)
VERSION_FILE := VERSION.txt
release: $(release_name)
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
make -C ./rex_server
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
git ls-files | xargs -I{} cp --parents {} $(release_name)/source
date -I > $(release_name)/VERSION.txt
echo $(rev) >> $(release_name)/VERSION.txt
go version >> $(release_name)/VERSION.txt
tar cvzf $(release_name).tar.gz $(release_name)
mv ./rex_client/rexclient $(RELEASE_NAME)
mv ./rex_server/rexserver $(RELEASE_NAME)
cp ./LICENSE.txt $(RELEASE_NAME)
cp ./VERSION.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)/VERSION.txt
echo $(rev) >> $(RELEASE_NAME)/VERSION.txt
go version >> $(RELEASE_NAME)/VERSION.txt
tar cvzf $(RELEASE_NAME).tar.gz $(RELEASE_NAME)
$(release_name):
$(RELEASE_NAME):
mkdir -p $@
container:
@ -27,4 +44,4 @@ clean:
rm -rf *.tar.gz
rm -rf rexforge_*
.PHONY: release clean container
.PHONY: release clean container help

22
generate_version.sh Normal file
View file

@ -0,0 +1,22 @@
#!/bin/bash
if [ -z "$1" ]; then
echo "ERROR: No version file name provided. Usage: $0 <version_file>"
exit 1
fi
VERSION_FILE="$1"
if git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
VERSION=$(git describe 2>/dev/null || git rev-parse --short HEAD || echo "v0.0.0-unknown")
DIRTY=$(git diff-index --quiet HEAD -- || echo "-dirty")
FULL_VERSION="${VERSION}${DIRTY}"
echo "$FULL_VERSION" >"$VERSION_FILE"
else
if [ -f "$VERSION_FILE" ]; then
echo "INFO: $VERSION_FILE already exists. Please update it manually if needed."
else
echo "ERROR: Not in a Git repository, and $VERSION_FILE does not exist. Unable to generate version!"
exit 1
fi
fi