1+ RETURN=RETURN
2+ if > /dev/null 2>&1 (set -o pipefail); then
3+ set -o pipefail
4+ fi
5+ if > /dev/null 2>&1 ( shopt -s nullglob ); then
6+ shopt -s nullglob
7+ fi
8+ _testrap () {
9+ trap ' ' RETURN
10+ }
11+ if ! > /dev/null 2>&1 ( _testrap ) ; then
12+ RETURN=EXIT
13+ fi
114set -eu
2- set -o pipefail
3- shopt -s nullglob
415
5-
6- jq=" $( command -v jq) "
16+ skopeo=$( command -v skopeo)
717
818digest_of () {
19+ local rc=
920 local repo=" ${1:- } "
1021 local log=" ${2:- } "
11- if [ " x $jq " = ' x ' ]; then
12- >&2 echo ' jq not installed!'
13- return 101
22+ if [ x $skopeo = x ]; then
23+ >&2 echo ' skopeo not installed!'
24+ return 102
1425 fi
1526 if [ " x$repo " = ' x' ]; then
1627 >&2 echo ' no repo provided!'
1728 return 1
1829 fi
19- local PIPE=$( mktemp -u)
30+ local PIPE=" $( mktemp -u) "
2031 mkfifo " $PIPE "
2132 exec 3<> " $PIPE "
2233 rm $PIPE
2334 if [ " x$log " = ' x' ]; then
24- log=" $( mktemp digest_of.log.XXXX) "
25- trap " rm -f $log ;exec 3>&-" RETURN
35+ PIPE=" $( mktemp -u) "
36+ mkfifo " $PIPE "
37+ exec 4<> " $PIPE "
38+ rm $PIPE
39+ trap " exec 4>&-;exec 3>&-" $RETURN
2640 else
27- trap " exec 3>&-" RETURN
41+ trap " exec 3>&-" $ RETURN
2842 fi
29- if ! 2>> " $log " docker inspect " $repo " | >&3 2>> " $log " $jq -r ' .[].RepoDigests[]' ; then
30- >&2 echo ' Unable to inspect ' " $repo " ' !'
43+
44+ rc=0
45+ 2>> " $log " skopeo \
46+ inspect \
47+ --raw docker://" $repo " | >&3 2>> " $log " skopeo \
48+ manifest-digest /dev/stdin || rc=$?
49+
50+ if [ $rc -ne 0 ] ; then
51+ >&2 echo ' Unable to inspect ' " $repo " ' (return code: ' $rc ' )!'
3152 >&2 cat " $log "
32- return 16
53+ return $rc
3354 fi
3455
3556 local digest
@@ -45,13 +66,13 @@ trim_slash() {
4566 local s
4667 for s in " ${@:- } "
4768 do
48- sed -E ' s://*:/:g; s:(^/)?/*$:\1:' <<< " ${s} "
69+ echo " ${s} " | sed -E ' s://*:/:g; s:(^/)?/*$:\1:'
4970 done ;
5071}
5172
52- ALPINE_VERSION=" ${1:- } "
53- PYTHON_VERSION=" ${2:- } "
54- ORG=" ${3:- } "
73+ ALPINE_VERSION=" ${1:- ${ALPINE_VERSION :- } } "
74+ PYTHON_VERSION=" ${2:- ${PYTHON_VERSION :- } } "
75+ ORG=" ${3:- ${ORG :- } } "
5576
5677if case " $ALPINE_VERSION " in alpine* ) true ;; * ) false ;; esac ; then
5778 ALPINE_VERSION=" $( echo " $ALPINE_VERSION " | sed ' s|alpine||g' ) "
0 commit comments