From 3e6d3ead55fdeae15fc7fa2666ed1e37f0a4ca5d Mon Sep 17 00:00:00 2001 From: Jeremy Davis Date: Thu, 11 Jan 2024 01:53:19 +0000 Subject: [PATCH 1/4] gh_releases: default to only show latest stable --- .../usr/local/bin/gh_releases | 39 ++++++++++++++++--- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/overlays/turnkey.d/github-latest-release/usr/local/bin/gh_releases b/overlays/turnkey.d/github-latest-release/usr/local/bin/gh_releases index 4d952a87..798babec 100755 --- a/overlays/turnkey.d/github-latest-release/usr/local/bin/gh_releases +++ b/overlays/turnkey.d/github-latest-release/usr/local/bin/gh_releases @@ -2,7 +2,6 @@ [[ -z $DEBUG ]] || set -x -repo_path="$1" # user/repo_name tmp_dir=/tmp/gh_releases rm -rf $tmp_dir mkdir -p $tmp_dir @@ -12,14 +11,19 @@ warning() { echo -e "[WARNING] $*" 1>&2; } usage() { cat >&2 </ +Usage: $(basename "$0") [OPTIONS] / + +Options: + -a|--all show all (stable) versions, not just the most recent + -p|--inc-pre-release + include alpha, beta and rc versions Env Vars: # used for github api GITHUB_USER GITHUB_USER_TOKEN - # retain temp files and set x if set + # retain temp files and set x DEBUG # omit tags or releases in output respectively if set @@ -31,6 +35,24 @@ Note: Setting GITHUB_USER and GITHUB_USER_TOKEN environment variables are EOF } +unset show_all pre_release repo_path +while [[ "$#" -gt 0 ]]; do + case $1 in + -a|--all) + show_all=true;; + -p|--inc-pre-release) + pre_release=true;; + *) + if [[ -z "$repo_path" ]]; then + repo_path="$1" + else + usage + fatal "Unknown option: $1" + fi;; + esac + shift +done + if [[ -z "$repo_path" ]]; then usage fatal "user/repo not provided!" @@ -89,5 +111,12 @@ get_all_pages() { [[ -z $NO_TAGS ]] && get_all_pages "https://api.github.com/repos/${repo_path}/tags" "name" echo "Done!" 1>&2 -cat $tmp_dir/releases | sort --version-sort --unique -[[ -n $DEBUG ]] || rm -rf $tmp_dir +versions=$(cat $tmp_dir/releases | sort --version-sort --unique) +if [[ -z "$pre_release" ]]; then + versions=$(grep -vi 'alpha\|beta\|rc' <<<"$versions") +fi +if [[ -z "$show_all" ]]; then + versions=$(tail -1 <<<"$versions") +fi +echo "$versions" +[[ -z $DEBUG ]] && rm -rf $tmp_dir From f4e9ab8dc3e51800bab399cc756e3d44ce655c70 Mon Sep 17 00:00:00 2001 From: Jeremy Davis Date: Thu, 11 Jan 2024 03:53:37 +0000 Subject: [PATCH 2/4] Add -h|--help --- .../turnkey.d/github-latest-release/usr/local/bin/gh_releases | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/overlays/turnkey.d/github-latest-release/usr/local/bin/gh_releases b/overlays/turnkey.d/github-latest-release/usr/local/bin/gh_releases index 798babec..8fa69ec0 100755 --- a/overlays/turnkey.d/github-latest-release/usr/local/bin/gh_releases +++ b/overlays/turnkey.d/github-latest-release/usr/local/bin/gh_releases @@ -14,6 +14,7 @@ usage() { Usage: $(basename "$0") [OPTIONS] / Options: + -h|--help show this help and exit -a|--all show all (stable) versions, not just the most recent -p|--inc-pre-release include alpha, beta and rc versions @@ -42,6 +43,9 @@ while [[ "$#" -gt 0 ]]; do show_all=true;; -p|--inc-pre-release) pre_release=true;; + -h|--help) + usage + exit;; *) if [[ -z "$repo_path" ]]; then repo_path="$1" From c801348202e2200043ce8376b1a2243eeaf27f55 Mon Sep 17 00:00:00 2001 From: Jeremy Davis Date: Thu, 11 Jan 2024 04:10:39 +0000 Subject: [PATCH 3/4] Actually --pre-release makes more sense --- .../turnkey.d/github-latest-release/usr/local/bin/gh_releases | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/overlays/turnkey.d/github-latest-release/usr/local/bin/gh_releases b/overlays/turnkey.d/github-latest-release/usr/local/bin/gh_releases index 8fa69ec0..77e9b9de 100755 --- a/overlays/turnkey.d/github-latest-release/usr/local/bin/gh_releases +++ b/overlays/turnkey.d/github-latest-release/usr/local/bin/gh_releases @@ -16,7 +16,7 @@ Usage: $(basename "$0") [OPTIONS] / Options: -h|--help show this help and exit -a|--all show all (stable) versions, not just the most recent - -p|--inc-pre-release + -p|--pre-release include alpha, beta and rc versions Env Vars: @@ -41,7 +41,7 @@ while [[ "$#" -gt 0 ]]; do case $1 in -a|--all) show_all=true;; - -p|--inc-pre-release) + -p|--pre-release) pre_release=true;; -h|--help) usage From 74b4fa1d5781a8b181e8dfc032da401a9a6a6563 Mon Sep 17 00:00:00 2001 From: Jeremy Davis Date: Thu, 25 Jan 2024 19:58:21 +1100 Subject: [PATCH 4/4] Apply shellcheck suggestions --- .../turnkey.d/github-latest-release/usr/local/bin/gh_releases | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/overlays/turnkey.d/github-latest-release/usr/local/bin/gh_releases b/overlays/turnkey.d/github-latest-release/usr/local/bin/gh_releases index 77e9b9de..dd37e570 100755 --- a/overlays/turnkey.d/github-latest-release/usr/local/bin/gh_releases +++ b/overlays/turnkey.d/github-latest-release/usr/local/bin/gh_releases @@ -89,7 +89,9 @@ get_page() { page=$3 tmp_file=$(mktemp $tmp_dir/XXXX.tmp) curl "$USER" -b /tmp/cookies.txt -c /tmp/cookies.txt -s "${url}?page=${page}&per_page=100" > "$tmp_file" 2>/dev/null || true - if grep '"message"' "$tmp_file"; then + if grep "Bad credentials" "$tmp_file" >/dev/null ; then + fatal "Bad GitHub credentials" + elif grep '"message"' "$tmp_file"; then fatal "$repo_path: $(sed -En '\|message|s|^.*: "(.*)",$|\1|p' "$tmp_file")" else grep -oP "\"$key\": \"\\K(.*)(?=\")" "$tmp_file"