diff options
| author | Selene ToyKeeper | 2023-12-05 11:54:54 -0700 |
|---|---|---|
| committer | Selene ToyKeeper | 2023-12-05 11:54:54 -0700 |
| commit | 7153149c99e416f6efad3b84e5b550c0abf56454 (patch) | |
| tree | cb7060886b8be63caff06bbee5170e493638d7be /bin | |
| parent | forgot one item in the ChangeLog (diff) | |
| download | anduril-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-x | bin/build-all.sh | 14 | ||||
| -rwxr-xr-x | bin/version-string.sh | 58 |
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 "$@" + |
