From c4d8698741ef6524aed514794d014c9f21d4de99 Mon Sep 17 00:00:00 2001 From: Paul M Date: Mon, 14 Jul 2025 21:08:53 -0500 Subject: [PATCH] refactor: improve error handling in GitHub release download function --- mastersetup.bash | 40 ++++++++++++++++++---------------------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/mastersetup.bash b/mastersetup.bash index 420afb4..5096580 100755 --- a/mastersetup.bash +++ b/mastersetup.bash @@ -20,31 +20,27 @@ cleanup() { # Usage: download_latest_deb "owner/repo" "output_file" ["asset_pattern"] # curtsey of Grok download_latest_deb() { - local repo="$1" # GitHub repo (e.g., "TabbyML/tabby") - local output="$2" # Output file path (e.g., "tabby.deb") - local pattern="$3" # Optional: regex pattern to filter assets (e.g., "tabby_.*_amd64.deb") - local api_url="https://api.github.com/repos/$repo/releases/latest" - local download_url + local repo="$1" # GitHub repo (e.g., "Eugeny/tabby") + local output="$2" # Output file path (e.g., "/tmp/tabby_amd64.deb") + local pattern="$3" # Optional: regex pattern to filter assets (e.g., "tabby.*amd64.deb") + local api_url="https://api.github.com/repos/$repo/releases/latest" + local download_url - # Fetch the latest release JSON and extract the download URL for the .deb - download_url=$(curl -s "$api_url" | jq -r --arg pat "${pattern:-.*\.deb}" \ - '.assets[] | select(.name | test($pat)) | .browser_download_url') + # Fetch the latest release JSON and extract the download URL for the .deb + download_url=$(curl -s -f "$api_url" | jq -r --arg pat "${pattern:-.*\.deb}" \ + '.assets[] | select(.name | test($pat)) | .browser_download_url') + if [[ -z "$download_url" || $? -ne 0 ]]; then + echo "Error: No .deb file found for $repo with pattern '$pattern' or API request failed" >&2 + return 1 + fi - if [[ -z "$download_url" ]]; then - echo "Error: No .deb file found for $repo with pattern '$pattern'" - return 1 - fi - - # Download the .deb file - echo "Downloading $download_url to $output..." - curl -sL "$download_url" -o "$output" - - if [[ $? -eq 0 ]]; then + # Download the .deb file + echo "Downloading $download_url to $output..." + if ! curl -sL -f "$download_url" -o "$output"; then + echo "Error: Failed to download $output" >&2 + return 1 + fi echo "Successfully downloaded $output" - else - echo "Error: Failed to download $output" - return 1 - fi } # System update and base tools