aboutsummaryrefslogtreecommitdiff
path: root/Tools/scripts/git-get-latest-remote-version.sh
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/scripts/git-get-latest-remote-version.sh')
-rwxr-xr-xTools/scripts/git-get-latest-remote-version.sh46
1 files changed, 46 insertions, 0 deletions
diff --git a/Tools/scripts/git-get-latest-remote-version.sh b/Tools/scripts/git-get-latest-remote-version.sh
new file mode 100755
index 000000000000..3148305b4f95
--- /dev/null
+++ b/Tools/scripts/git-get-latest-remote-version.sh
@@ -0,0 +1,46 @@
+#!/bin/sh
+#
+# MAINTAINER: yuri@FreeBSD.org
+
+set -e
+set -o pipefail
+
+export LC_ALL=C
+
+##
+## git-get-latest-remote-version.sh: retrieves the latest version of a remote project at the given Git URL
+##
+
+# args
+
+REPOSITORY_URL="$1"
+TAG_PREFIX="$2"
+
+if [ -z "$REPOSITORY_URL" ]; then
+ echo "Usage: $0 <repository-url> <tag-prefix>"
+ exit 1
+fi
+
+# check that packaged dependencies are installed
+
+for dep in git version_sort; do
+ if ! which -s $dep; then
+ echo "error: the '$dep' dependency is missing"
+ if [ $dep = "git" ]; then
+ echo "... please install the 'git' package"
+ elif [ $dep = "version_sort" ]; then
+ echo "... please install the 'libversion' package"
+ fi
+ exit 1
+ fi
+done
+
+
+# MAIN
+
+git ls-remote --refs --tags $REPOSITORY_URL 2>/dev/null |
+ grep "refs/tags/$TAG_PREFIX" |
+ sed -e "s|.*refs/tags/$TAG_PREFIX||" |
+ version_sort |
+ tail -1 ||
+ ! echo "failed to find the git project '$REPOSITORY_URL' or tags in it"