From a1b3593dd529ab4024099948e76e30463fe93238 Mon Sep 17 00:00:00 2001 From: TheSpad Date: Sun, 4 Feb 2024 15:56:56 +0000 Subject: [PATCH 1/2] Replace echoes into jq with here strings --- docker-mods.v3 | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/docker-mods.v3 b/docker-mods.v3 index 4157df0..f47e38f 100755 --- a/docker-mods.v3 +++ b/docker-mods.v3 @@ -213,27 +213,27 @@ get_blob_sha() { --header "Authorization: Bearer ${1}" \ --user-agent "${MOD_UA}" \ "${2}/${3}") - if echo "${MULTIDIGEST}" | jq -e '.layers // empty' >/dev/null 2>&1; then + if jq -e '.layers // empty' <<< "${MULTIDIGEST}" >/dev/null 2>&1; then # If there's a layer element it's a single-arch manifest so just get that digest - echo "${MULTIDIGEST}" | jq -r '.layers[0].digest'; + jq -r '.layers[0].digest' <<< "${MULTIDIGEST}"; else - # Otherwise it's multi-arch or has an attestation manifest - if echo "${MULTIDIGEST}" | jq -e '.manifests[]?.annotations // empty' >/dev/null 2>&1; then - # Check for attestation manifest and delete if found - write_mod_debug "Mod has an attestation-manifest" >&2 - MULTIDIGEST=$(echo "${MULTIDIGEST}" | jq 'del(.manifests[] | select(.annotations))') + # Otherwise it's multi-arch or has a manifest annotations + if jq -e '.manifests[]?.annotations // empty' <<< "${MULTIDIGEST}" >/dev/null 2>&1; then + # Check for manifest annotations and delete if found + write_mod_debug "Mod has one or more manifest annotations" >&2 + MULTIDIGEST=$(jq 'del(.manifests[] | select(.annotations))' <<< "${MULTIDIGEST}") fi - if [[ $(echo "${MULTIDIGEST}" | jq '.manifests | length') -gt 1 ]]; then - # If there's still more than one manifest, it's multi-arch + if [[ $(jq '.manifests | length' <<< "${MULTIDIGEST}") -gt 1 ]]; then + # If there's still more than one digest, it's multi-arch write_mod_debug "Mod has a multi-arch manifest" >&2 - MULTIDIGEST=$(echo "${MULTIDIGEST}" | jq -r ".manifests[] | select(.platform.architecture == \"${4}\").digest?") + MULTIDIGEST=$(jq -r ".manifests[] | select(.platform.architecture == \"${4}\").digest?" <<< "${MULTIDIGEST}") if [[ -z "${MULTIDIGEST}" ]]; then exit 1 fi else # Otherwise it's single arch write_mod_debug "Mod only has a single arch manifest" >&2 - MULTIDIGEST=$(echo "${MULTIDIGEST}" | jq -r ".manifests[].digest?") + MULTIDIGEST=$(jq -r ".manifests[].digest?" <<< "${MULTIDIGEST}") fi if DIGEST=$(curl -f --retry 10 --retry-max-time 60 --retry-connrefused \ ${CURL_NOISE_LEVEL} \ @@ -243,7 +243,7 @@ get_blob_sha() { --header "Authorization: Bearer ${1}" \ --user-agent "${MOD_UA}" \ "${2}/${MULTIDIGEST}"); then - echo "${DIGEST}" | jq -r '.layers[0].digest'; + jq -r '.layers[0].digest' <<< "${DIGEST}"; fi fi } From 75804ab51883121a5276595ad92e638463ca0c0f Mon Sep 17 00:00:00 2001 From: TheSpad Date: Sun, 4 Feb 2024 16:00:37 +0000 Subject: [PATCH 2/2] Fix grammar --- docker-mods.v3 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-mods.v3 b/docker-mods.v3 index f47e38f..a7c6a51 100755 --- a/docker-mods.v3 +++ b/docker-mods.v3 @@ -217,7 +217,7 @@ get_blob_sha() { # If there's a layer element it's a single-arch manifest so just get that digest jq -r '.layers[0].digest' <<< "${MULTIDIGEST}"; else - # Otherwise it's multi-arch or has a manifest annotations + # Otherwise it's multi-arch or has manifest annotations if jq -e '.manifests[]?.annotations // empty' <<< "${MULTIDIGEST}" >/dev/null 2>&1; then # Check for manifest annotations and delete if found write_mod_debug "Mod has one or more manifest annotations" >&2