Skip to content

Instantly share code, notes, and snippets.

@lambdalisue
Forked from maxim/gh-dl-release
Last active September 1, 2021 10:32
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lambdalisue/8b2fbddee58e8ba7eb72926495ac8aeb to your computer and use it in GitHub Desktop.
Save lambdalisue/8b2fbddee58e8ba7eb72926495ac8aeb to your computer and use it in GitHub Desktop.
Download assets from private Github releases
#!/bin/bash
#
# Usage:
#
# download-gh-release {user}/{repo} {file} [{tag}]
#
repo=$1
file=$2
tag=${3:-latest}
# Construct parse expression
if [[ "$tag" = "latest" ]]; then
parser=".[0].assets | map(select(.name == \"$file\"))[0].id"
else
parser=". | map(select(.tag_name == \"$tag\"))[0].assets | map(select(.name == \"$file\"))[0].id"
fi
# Get releases
releases=$(curl -sL https://${GITHUB_TOKEN}@api.github.com/repos/${repo}/releases)
# Get asset_id
asset_id=$(echo $releases | jq "$parser")
if [[ "$assert_id" = "null" ]]; then
echo "ERROR: '$tag' is not found" >&2
exit 1
fi
# Download asset
curl -sLJO \
-H 'Accept: application/octet-stream' \
https://${GITHUB_TOKEN}@api.github.com/repos/${repo}/releases/assets/${asset_id}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment