#!/bin/bash # Function to get all releases get_all_releases() { local page=1 local per_page=100 local releases="" local new_releases # Prepare headers local headers=(-H "Accept: application/vnd.github.v3+json") if [ -n "$GITHUB_TOKEN" ]; then headers+=(-H "Authorization: Bearer $GITHUB_TOKEN") fi while true; do response=$(curl -s "${headers[@]}" \ "https://api.github.com/repos/abetlen/llama-cpp-python/releases?page=$page&per_page=$per_page") # Check if the response is valid JSON if ! echo "$response" | jq empty > /dev/null 2>&1; then echo "Error: Invalid response from GitHub API" >&2 echo "Response: $response" >&2 return 1 fi new_releases=$(echo "$response" | jq -r '.[].tag_name') if [ -z "$new_releases" ]; then break fi releases="$releases $new_releases" ((page++)) done echo $releases } # Get all releases and save to file releases=$(get_all_releases) if [ $? -ne 0 ]; then echo "Failed to fetch releases. Please check your internet connection and try again later." >&2 exit 1 fi echo "$releases" | tr ' ' '\n' > all_releases.txt echo "All releases have been saved to all_releases.txt"