Update diff-image.sh

This commit is contained in:
Shiming Zhang 2021-09-16 11:44:01 +08:00
parent 9f4589eac4
commit 445b224619
1 changed files with 18 additions and 5 deletions

View File

@ -72,11 +72,19 @@ function inspect() {
;; ;;
2) 2)
local mediaType=$(echo "${raw}" | jq -r '.mediaType // "" ') local mediaType=$(echo "${raw}" | jq -r '.mediaType // "" ')
if [[ "${mediaType}" == "" ]]; then
if [[ "$(echo "${raw}" | jq -r '.layers | length')" -gt 0 ]]; then
mediaType="layers"
elif [[ "$(echo "${raw}" | jq -r '.manifests | length')" -gt 0 ]]; then
mediaType="manifests"
fi
fi
case "${mediaType}" in case "${mediaType}" in
"application/vnd.docker.distribution.manifest.v2+json" | "") "layers" | "application/vnd.docker.distribution.manifest.v2+json")
echo "${raw}" | jq -r '.layers[].digest' echo "${raw}" | jq -r '.layers[].digest'
;; ;;
"application/vnd.docker.distribution.manifest.list.v2+json") "manifests" | "application/vnd.docker.distribution.manifest.list.v2+json")
echo "${raw}" | jq -j '.manifests[] | .platform.architecture , " " , .platform.os , " " , .digest , "\n"' | sort echo "${raw}" | jq -j '.manifests[] | .platform.architecture , " " , .platform.os , " " , .digest , "\n"' | sort
;; ;;
*) *)
@ -125,8 +133,13 @@ function diff-image-with-tag() {
return 0 return 0
fi fi
local inspect1="$(inspect ${image1})"
local inspect2="$(inspect ${image2})" local inspect2="$(inspect ${image2})"
if [[ "${inspect2}" == "" ]]; then
echo "${SELF}: UNSYNC: ${image1} and ${image2} are not in synchronized, ${image2} content is empty" >&2
return 1
fi
local inspect1="$(inspect ${image1})"
local diff_raw=$(diff --unified <(echo "${inspect1}") <(echo "${inspect2}")) local diff_raw=$(diff --unified <(echo "${inspect1}") <(echo "${inspect2}"))
if [[ "${diff_raw}" != "" ]]; then if [[ "${diff_raw}" != "" ]]; then
@ -178,10 +191,10 @@ function diff-image() {
echo "${diff_raw}" >&2 echo "${diff_raw}" >&2
fi fi
for tag in ${reduce}; do for tag in ${reduce}; do
echo "${SELF}: UNSYNC: ${image1}:${tag} and ${image2}:${tag} are not in synchronized, ${image2}:${tag} is empty" >&2 echo "${SELF}: UNSYNC: ${image1}:${tag} and ${image2}:${tag} are not in synchronized, ${image2}:${tag} does not exist" >&2
done done
for tag in ${increase}; do for tag in ${increase}; do
echo "${SELF}: UNSYNC: ${image1}:${tag} and ${image2}:${tag} are not in synchronized, ${image1}:${tag} is empty" >&2 echo "${SELF}: UNSYNC: ${image1}:${tag} and ${image2}:${tag} are not in synchronized, ${image1}:${tag} does not exist" >&2
done done
echo "${common}" echo "${common}"
return 1 return 1