From 4d500cbdddcc83d089febb6254baf6a877a78fd9 Mon Sep 17 00:00:00 2001
From: Your Name <j@842.be>
Date: Wed, 25 Jun 2025 22:47:45 +1200
Subject: [PATCH] Update 2 files

---
 bb64/publish.sh | 66 ++++++++++++++++++++++++++++++++-----------------
 gp/gp           |  2 +-
 2 files changed, 44 insertions(+), 24 deletions(-)

diff --git a/bb64/publish.sh b/bb64/publish.sh
index 625f175..8ce41b1 100755
--- a/bb64/publish.sh
+++ b/bb64/publish.sh
@@ -77,40 +77,60 @@ if ! git config user.email >/dev/null 2>&1; then
     git config user.name "CI Bot"
 fi
 
-# Check if tag already exists
+# Check if tag already exists locally
 if git rev-parse "$TAG" >/dev/null 2>&1; then
-    echo "Tag $TAG already exists, deleting it first..."
+    echo "Tag $TAG already exists locally, deleting it first..."
     git tag -d "$TAG"
-    git push origin --delete "$TAG" || true
 fi
 
-git tag -a "$TAG" -m "Release $TAG"
-if ! git push origin "$TAG"; then
-    echo "Failed to push tag $TAG to origin" >&2
-    # Try to delete local tag if push failed
-    git tag -d "$TAG"
-    exit 1
+# Check if tag exists on remote
+if git ls-remote --tags origin | grep -q "refs/tags/$TAG"; then
+    echo "Tag $TAG already exists on remote - this is expected for multi-architecture builds"
+    echo "Skipping tag creation and proceeding with release attachment..."
+else
+    echo "Creating new tag $TAG..."
+    git tag -a "$TAG" -m "Release $TAG"
+    if ! git push origin "$TAG"; then
+        echo "Failed to push tag $TAG to origin" >&2
+        # Try to delete local tag if push failed
+        git tag -d "$TAG"
+        exit 1
+    fi
+    echo "Successfully created and pushed tag $TAG"
 fi
 
-echo "Creating release $TAG on Gitea..."
-RELEASE_RESPONSE=$(curl -s -X POST "$API_URL/releases" \
-    -H "Content-Type: application/json" \
-    -H "Authorization: token $RELEASE_WRITE_TOKEN" \
-    -d "$RELEASE_DATA")
+echo "Getting or creating release $TAG on Gitea..."
 
-echo "Release API response: $RELEASE_RESPONSE"
+# First try to get existing release
+EXISTING_RELEASE=$(curl -s -X GET "$API_URL/releases/tags/$TAG" \
+    -H "Authorization: token $RELEASE_WRITE_TOKEN")
 
-RELEASE_ID=$(echo "$RELEASE_RESPONSE" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2)
+if echo "$EXISTING_RELEASE" | grep -q '"id":[0-9]*'; then
+    # Release already exists, get its ID
+    RELEASE_ID=$(echo "$EXISTING_RELEASE" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2)
+    echo "Release $TAG already exists with ID: $RELEASE_ID"
+else
+    # Create new release
+    echo "Creating new release $TAG on Gitea..."
+    RELEASE_RESPONSE=$(curl -s -X POST "$API_URL/releases" \
+        -H "Content-Type: application/json" \
+        -H "Authorization: token $RELEASE_WRITE_TOKEN" \
+        -d "$RELEASE_DATA")
 
-if [ -z "$RELEASE_ID" ]; then
-    echo "Failed to create release on Gitea." >&2
-    echo "API URL: $API_URL/releases" >&2
-    echo "Release data: $RELEASE_DATA" >&2
-    exit 1
+    echo "Release API response: $RELEASE_RESPONSE"
+
+    RELEASE_ID=$(echo "$RELEASE_RESPONSE" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2)
+
+    if [ -z "$RELEASE_ID" ]; then
+        echo "Failed to create release on Gitea." >&2
+        echo "API URL: $API_URL/releases" >&2
+        echo "Release data: $RELEASE_DATA" >&2
+        exit 1
+    fi
+
+    echo "Created new release with ID: $RELEASE_ID"
 fi
 
-echo "Created release with ID: $RELEASE_ID"
-
 # Upload binaries and install.sh
 echo "Uploading assets to release..."
 for FILE in ${PROJECT}.${ARCH_ALIAS} ${PROJECT}.${ARCH} install.sh; do
diff --git a/gp/gp b/gp/gp
index 4c7f79a..6d159aa 100755
--- a/gp/gp
+++ b/gp/gp
@@ -350,7 +350,7 @@ case "${1:-}" in
         exit 0
         ;;
     version)
-        echo "gp version 2.0.0"
+        echo "2.0.1"
         exit 0
         ;;
 esac