#!/bin/bash # usage # downloadgithubasset.sh mozilla/sops # downloadgithubasset.sh mozilla/sops 3.4.0 if ! [ -x "$(command -v jq)" ]; then echo 'Error: jq is not installed.' >&2 exit 1 fi if [ -z "$1" ]; then echo 'No argument supplied, you must specify a github repo' >&2 exit 1 fi release=${2:-latest} if [ "$release" == "latest" ]; then url="https://api.github.com/repos/$1/releases/$release" else url="https://api.github.com/repos/$1/releases/tags/$release" fi details=$(curl -s "$url") tagname=$(echo "$details" | jq -r '.tag_name') if [ "$tagname" == "null" ]; then echo 'bad URL' >&2 exit 1 fi echo "tag: $tagname" # -c for multi line compressed output # -r for raw output assets=$(echo "$details" | jq -c '.assets[]') names=($(echo "$assets" | jq -cr '.name')) downloads=($(echo "$assets" | jq -cr '.browser_download_url')) select name in "${names[@]}"; do if [[ ! -z "$name" ]]; then download=$((REPLY - 1)) wget "${downloads[download]}" fi break done