From 0cb0241b880ab0026d5cbf860232849efdc27ab6 Mon Sep 17 00:00:00 2001 From: Tim Kimber Date: Fri, 8 Oct 2021 16:39:10 +0100 Subject: [PATCH] Extract release tag from release api using awk (fix BSD issues) --- getssl | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/getssl b/getssl index c4712e8..254ca16 100755 --- a/getssl +++ b/getssl @@ -774,10 +774,8 @@ check_getssl_upgrade() { # check if a more recent release is available fi local release_data release_tag release_ver local_ver release_desc NEWCMD debug "Checking for releases at $RELEASE_API" - # Sometimes the json is pretty-printed, sometimes not. Loosely tied to --user-agent, but not - # always. Normalize it enough to get the 3 elements necessary. Oh, for jq... # shellcheck disable=SC2086 - release_data="$(curl ${_NOMETER:---silent} --user-agent "$CURL_USERAGENT" -H 'Accept: application/vnd.github.v3+json' "$RELEASE_API" | sed -e's/\("[^:]*": *\("[^""]*",\|[^,]*[,}]\)\)/\r\n\1/g')" + release_data="$(curl ${_NOMETER:---silent} --user-agent "$CURL_USERAGENT" -H 'Accept: application/vnd.github.v3+json' "$RELEASE_API")" errcode=$? if [[ $errcode -eq 60 ]]; then error_exit "curl needs updating, your version does not support SNI (multiple SSL domains on a single IP)" @@ -786,8 +784,8 @@ check_getssl_upgrade() { # check if a more recent release is available fi # Replace error in release description with _error (which is ignored by check_output_for_errors() in the tests) debug "${release_data//error/_error}" - release_data="$(sed -e's/^ *//g' <<<"${release_data}")" - release_tag="$(sed -e'/"tag_name": *"/!d;s/"tag_name": *"\([^""]*\).*$/\1/' <<<"${release_data}")" + # awk from https://stackoverflow.com/questions/1761341/awk-print-next-record-following-matched-record + release_tag=$(awk -F'"' '/tag_name/ {f=NR} f&&NR-1==f' RS=":|," <<<"${release_data}" | sed -e's/"//g') if [[ "${release_tag:0:1}" != 'v' ]] ; then if [[ ${_MUTE} -eq 0 ]]; then info "The current repository has no releases or is improperly tagged; can't check for upgrades: '$release_tag'"