aboutsummaryrefslogtreecommitdiff
path: root/bin/version-string.sh
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/version-string.sh
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 '')
-rwxr-xr-xbin/version-string.sh58
1 files changed, 58 insertions, 0 deletions
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 "$@"
+