github.com/goreleaser/goreleaser@v1.25.1/scripts/get-releases.sh (about)

     1  #!/usr/bin/env bash
     2  set -euo pipefail
     3  
     4  get_last_page() {
     5  	local url="$1"
     6  	curl -sSf -I -H "Authorization: Bearer $GITHUB_TOKEN" \
     7  		"$url" |
     8  		grep -E '^link: ' |
     9  		sed -e 's/^link:.*page=//g' -e 's/>.*$//g' || echo "1"
    10  }
    11  
    12  generate() {
    13  	local url="$1"
    14  	local file="$2"
    15  	last_page="$(get_last_page "$url")"
    16  	tmp="$(mktemp -d)"
    17  
    18  	for i in $(seq -w 1 "$last_page"); do
    19  		page="$(echo "$i" | awk '$0*=1')" # removes leading zeroes
    20  		echo "page: $page file: $tmp/$i.json"
    21  		curl \
    22  			-H "Authorization: Bearer $GITHUB_TOKEN" \
    23  			-sSf "$url?page=$page" |
    24  			jq 'map({tag_name: .tag_name}) | [.[] | select(.tag_name != "nightly")]' >"$tmp/$i.json"
    25  
    26  	done
    27  
    28  	jq -s 'add' "$tmp"/*.json >"$file"
    29  	du -hs "$file"
    30  }
    31  
    32  latest() {
    33  	local url="$1"
    34  	local file="$2"
    35  	curl -sfL "$url/latest" | jq -r ".tag_name" >"$file"
    36  	du -hs "$file"
    37  }
    38  
    39  latest "https://api.github.com/repos/goreleaser/goreleaser/releases" "www/docs/static/latest"
    40  latest "https://api.github.com/repos/goreleaser/goreleaser-pro/releases" "www/docs/static/latest-pro"
    41  generate "https://api.github.com/repos/goreleaser/goreleaser/releases" "www/docs/static/releases.json"
    42  generate "https://api.github.com/repos/goreleaser/goreleaser-pro/releases" "www/docs/static/releases-pro.json"