From a29fa93e1e42e0d494327ca18e643086fd14ccb3 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 23 Mar 2025 21:44:43 -0400 Subject: [PATCH] Improve version extraction with stderr logging in get_latest_version --- ansible/templates/update-forgejo.sh.j2 | 38 ++++++++++++++++---------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/ansible/templates/update-forgejo.sh.j2 b/ansible/templates/update-forgejo.sh.j2 index fe90dec..9a1185b 100644 --- a/ansible/templates/update-forgejo.sh.j2 +++ b/ansible/templates/update-forgejo.sh.j2 @@ -45,20 +45,30 @@ backup_forgejo() { # Get the latest Forgejo version get_latest_version() { - log "Checking for the latest Forgejo version..." - - # Fetch the latest version from the Forgejo API with error handling - local latest_version - latest_version=$(curl -s --max-time 10 https://codeberg.org/api/v1/repos/forgejo/forgejo/releases/latest | \ - jq -r '.tag_name' | \ - sed 's/^v//') - - if [ -z "$latest_version" ]; then - log "ERROR: Failed to retrieve the latest version from Codeberg API." - exit 1 - fi - - echo "$latest_version" + # Redirect log output to stderr so it doesn't get captured + log "Checking for the latest Forgejo version..." >&2 + + local response + local latest_version + + response=$(curl -s --max-time 10 https://codeberg.org/api/v1/repos/forgejo/forgejo/releases/latest) + + # Check if response contains expected field (also redirect to stderr) + if ! echo "$response" | jq -e '.tag_name' > /dev/null; then + log "ERROR: Invalid response from Codeberg API." >&2 + log "Response was: $response" >&2 + exit 1 + fi + + latest_version=$(echo "$response" | jq -r '.tag_name' | sed 's/^v//') + + if [ -z "$latest_version" ]; then + log "ERROR: Failed to retrieve the latest version from Codeberg API." >&2 + exit 1 + fi + + # Only output the version number + echo "$latest_version" } # Get current version