scripts: add a helper for tagging releases

The tag-release.sh script creates an annotated tag containing
Klipper's current state.  Moonraker's update manager parses
this annotation to bind the available Klipper version to this
release of Moonraker.

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
This commit is contained in:
Eric Callahan 2022-04-01 09:04:14 -04:00
parent 72a85e08d4
commit 5c9409c28d
No known key found for this signature in database
GPG Key ID: 7027245FBBDDF59A
1 changed files with 71 additions and 0 deletions

71
scripts/tag-release.sh Executable file
View File

@ -0,0 +1,71 @@
#! /bin/bash
# Helper Script for Tagging Moonraker Releases
PRINT_ONLY="n"
KLIPPER_PATH="$HOME/klipper"
REMOTE=""
DESCRIBE="describe --always --tags --long"
# Get Tag and Klipper Path
TAG=$1
shift
while :; do
case $1 in
-k|--klipper-path)
shift
KLIPPER_PATH=$1
;;
-p|--print)
PRINT_ONLY="y"
;;
*)
break
esac
shift
done
if [ ! -d "$KLIPPER_PATH/.git" ]; then
echo "Invalid Klipper Path: $KLIPPER_PATH"
fi
echo "Klipper found at $KLIPPER_PATH"
GIT_CMD="git -C $KLIPPER_PATH"
ALL_REMOTES="$( $GIT_CMD remote | tr '\n' ' ' | awk '{gsub(/^ +| +$/,"")} {print $0}' )"
echo "Found Klipper Remotes: $ALL_REMOTES"
for val in $ALL_REMOTES; do
REMOTE_URL="$( $GIT_CMD remote get-url $val | awk '{gsub(/^ +| +$/,"")} {print tolower($0)}' )"
match="$( echo $REMOTE_URL | grep -Ecm1 '(klipper3d|kevinoconnor)/klipper'|| true )"
if [ "$match" -eq 1 ]; then
echo "Found Remote $val"
REMOTE="$val"
break
fi
done
[ "$REMOTE" = "" ] && echo "Unable to find a valid remote" && exit 1
$GIT_CMD fetch $REMOTE
DESC="$( $GIT_CMD $DESCRIBE $REMOTE/master | awk '{gsub(/^ +| +$/,"")} {print $0}' )"
HASH="$( $GIT_CMD rev-parse $REMOTE/master | awk '{gsub(/^ +| +$/,"")} {print $0}' )"
if [ "$PRINT_ONLY" = "y" ]; then
echo "
Tag: $TAG
Repo: Klipper
Branch: Master
Version: $DESC
Commit: $HASH
"
else
echo "Adding Tag $TAG"
git tag -a $TAG -m "Moonraker Version $TAG
Klipper Tag Data
repo: klipper
branch: master
version: $DESC
commit: $HASH
"
fi