28 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| ## this is a simple script to use the github API for release versions.
 | |
| ## this requires the egg has a variable for GITHUB_PACKAGE, VERSION and MATCH (match is to match the filename in some way)
 | |
| ## this supports using oauth/personal access tokens via GITHUB_USER and GITHUB_OAUTH_TOKEN (both are required.)
 | |
| ## if you are getting hit with GitHub API limit issues then you need to have the user and token set.
 | |
| 
 | |
| 
 | |
| if [ -z "$GITHUB_USER" ] && [ -z "$GITHUB_OAUTH_TOKEN" ] ; then
 | |
|     echo -e "using anon api call"
 | |
| else
 | |
|     echo -e "user and oauth token set"
 | |
|     alias curl='curl -u $GITHUB_USER:$GITHUB_OAUTH_TOKEN '
 | |
| fi
 | |
| 
 | |
| ## get release info and download links
 | |
| LATEST_JSON=$(curl --silent "https://api.github.com/repos/$GITHUB_PACKAGE/releases/latest")
 | |
| RELEASES=$(curl --silent "https://api.github.com/repos/$GITHUB_PACKAGE/releases")
 | |
| 
 | |
| if [ -z "$VERSION" ] || [ "$VERSION" == "latest" ]; then
 | |
|     DOWNLOAD_LINK=$(echo $LATEST_JSON | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})
 | |
| else
 | |
|     VERSION_CHECK=$(echo $RELEASES | jq -r --arg VERSION "$VERSION" '.[] | select(.tag_name==$VERSION) | .tag_name')
 | |
|     if [ "$VERSION" == "$VERSION_CHECK" ]; then
 | |
|         DOWNLOAD_LINK=$(echo $RELEASES | jq -r --arg VERSION "$VERSION" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})
 | |
|     else
 | |
|         echo -e "defaulting to latest release"
 | |
|         DOWNLOAD_LINK=$(echo $LATEST_JSON | jq .assets | jq -r .[].browser_download_url)
 | |
|     fi
 | |
| fi |