From b8913618f49df516c5e59078c6ae478cbce61c40 Mon Sep 17 00:00:00 2001 From: Imbus <> Date: Tue, 28 Jan 2025 11:08:52 +0100 Subject: [PATCH] An excuse for versioning for now --- .gitignore | 1 + Makefile | 39 +++++++++++++++++++++++++-------------- generate_version.sh | 22 ++++++++++++++++++++++ 3 files changed, 48 insertions(+), 14 deletions(-) create mode 100644 generate_version.sh diff --git a/.gitignore b/.gitignore index dfdf588..f8d205a 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ rexserver *.tar.gz *.zip /rexforge_* +VERSION.txt diff --git a/Makefile b/Makefile index 417f50a..f252255 100644 --- a/Makefile +++ b/Makefile @@ -1,21 +1,32 @@ -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 + +version: + @echo $(RELEASE_NAME) + +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 + 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: diff --git a/generate_version.sh b/generate_version.sh new file mode 100644 index 0000000..2832dc8 --- /dev/null +++ b/generate_version.sh @@ -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