aboutsummaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorSelene ToyKeeper2023-12-05 11:54:54 -0700
committerSelene ToyKeeper2023-12-05 11:54:54 -0700
commit7153149c99e416f6efad3b84e5b550c0abf56454 (patch)
treecb7060886b8be63caff06bbee5170e493638d7be /bin
parentforgot one item in the ChangeLog (diff)
downloadanduril-7153149c99e416f6efad3b84e5b550c0abf56454.tar.gz
anduril-7153149c99e416f6efad3b84e5b550c0abf56454.tar.bz2
anduril-7153149c99e416f6efad3b84e5b550c0abf56454.zip
moved version string calculation to bin/version-string.sh
Also updated the format slightly, so this rev is: `2023-12-03+2#1` +N for commits since tag #1 for dirty
Diffstat (limited to 'bin')
-rwxr-xr-xbin/build-all.sh14
-rwxr-xr-xbin/version-string.sh58
2 files changed, 59 insertions, 13 deletions
diff --git a/bin/build-all.sh b/bin/build-all.sh
index f239217..f2420a7 100755
--- a/bin/build-all.sh
+++ b/bin/build-all.sh
@@ -80,19 +80,7 @@ function make-version-h {
# old: version = build date
#date '+#define VERSION_NUMBER "%Y-%m-%d"' > ui/$UI/version.h
- # version = git tag + revs since + dirty flag
- REV=$(git describe --tags --dirty --abbrev=8 --match='r2*')
- # reformatting this would be easier with a perl one-liner,
- # but I'm trying to avoid extra build dependencies
- REV="${REV:1}" # strip the leading 'r'
- # strip rev hash (git won't give "commits since tag" without the rev hash)
- REV="${REV/-g[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]/}"
- REV="${REV/-dirty/.1}" # convert '-dirty' to '.1'
- # handle an empty name (happens during github action runs)
- if [[ -z "$REV" ]]; then
- HASH=$(git describe --always)
- REV="0.$HASH"
- fi
+ REV=$(bin/version-string.sh c)
# save the version name to version.h
mkdir -p ".build/$UI"
echo '#define VERSION_NUMBER "'"$REV"'"' > ".build/$UI/version.h"
diff --git a/bin/version-string.sh b/bin/version-string.sh
new file mode 100755
index 0000000..c1c5155
--- /dev/null
+++ b/bin/version-string.sh
@@ -0,0 +1,58 @@
+#!/usr/bin/env bash
+# Print a version string for the currently-checked-out code.
+# Copyright (C) 2023 Selene ToyKeeper
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+# Usage: version-string.sh [c|git|both]
+# Prints in C or Git format. Defaults to both.
+
+function main {
+ # eat first arg if invoked via 'make'
+ [[ "version" = "$1" ]] && shift
+
+ # default to showing both formats
+ ARGS="$*"
+ [[ -z "$ARGS" ]] && ARGS="both"
+
+ for arg in $ARGS ; do
+ case "$arg" in
+ git|g)
+ git-describe
+ ;;
+ c|C)
+ c-version-string
+ ;;
+ *)
+ echo -n 'C: ' ; c-version-string
+ echo -n 'git: ' ; git-describe
+ ;;
+ esac
+ done
+}
+
+function git-describe {
+ git describe --tags --dirty --match='r2*'
+}
+
+function c-version-string {
+ # version = git tag + revs since + dirty flag
+ REV=$(git-describe)
+ # convert "r2020-01-01-158-g0abcdef-dirty" to "2020-01-01+158#1"
+ REV=$(echo "$REV" |
+ sed -E 's/^r//;
+ s/-dirty/#1/;
+ s/-g[0-9a-f]+//;
+ s/^([0-9]{4}-[0-9]{2}-[0-9]{2})-/\1+/;
+ '
+ )
+ # handle an empty name (can happen during github action runs)
+ if [[ -z "$REV" ]]; then
+ HASH=$(git describe --always)
+ REV="0.$HASH"
+ fi
+ # print the version string
+ echo "$REV"
+}
+
+main "$@"
+