mirror of
				https://github.com/pelican-eggs/eggs.git
				synced 2025-11-04 02:48:07 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			29 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			1.5 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.
 | 
						|
apt update
 | 
						|
apt install -y curl jq
 | 
						|
 | 
						|
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_URL=$(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_URL=$(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_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)
 | 
						|
    fi
 | 
						|
fi |