diff --git a/src/check b/src/check index d66a2ef..4019dc4 100755 --- a/src/check +++ b/src/check @@ -9,3 +9,5 @@ filter='[ {"digest": $version} ] | tostring' jq -r --null-input --arg version "$(crane digest "$REPOSITORY:$TAG")" "$filter" + +rm "$INPUT_FILE" diff --git a/src/in b/src/in index 857cc33..ffd60d3 100755 --- a/src/in +++ b/src/in @@ -6,12 +6,23 @@ set -eu . ./common oci_dir="$(mktemp -d)" -crane pull --format=oci "$REPOSITORY:@$(jq -r .version.digest "$INPUT_FILE")" "$oci_dir" +digest="$(jq -r .version.digest < "$INPUT_FILE")" +crane pull --format=oci "$REPOSITORY:@$digest" "$oci_dir" cd "$oci_dir" + +# write outputs tar cf "$1/image.tar" ./* +echo "$REPOSITORY" > "$1/repository" +echo "$digest" > "$1/digest" + cd - 1>&2 2>/dev/null +# output filter='{ "version": .version } | tostring' jq -r "$filter" < "$INPUT_FILE" + +# cleanup +rm -r "$oci_dir" +rm "$INPUT_FILE" diff --git a/src/out b/src/out index 95be4c2..081b965 100755 --- a/src/out +++ b/src/out @@ -5,14 +5,28 @@ set -eu [ -e /opt/resource/common ] && cd /opt/resource . ./common -IMAGE_REFS_FILE="$(mktemp -t)" +image_refs_file="$(mktemp -t)" oci_dir="$(mktemp -d)" cd "$oci_dir" tar xf "$1/$(jq -r .params.image < "$INPUT_FILE")" cd - 1>&2 2>/dev/null -crane push "$oci_dir" "$REPOSITORY:$TAG" --image-refs="$IMAGE_REFS_FILE" + +crane push "$oci_dir" "$REPOSITORY:$TAG" --image-refs="$image_refs_file" +additional_tags="$(jq .params.additional_tags < "$INPUT_FILE")" +if [ -n "$additional_tags" ]; then + if ! [ -e "$additional_tags" ]; then + fail "additional_tags specified, but doesn't exist" + fi + tr ' \n\t' '\n\n\n' | grep -v '^$' | while read -r tag; do + crane tag "$REPOSITORY:@$(cat "$image_refs_file)" "$tag" + done +fi filter='{ "version": {"digest": $version} } | tostring' -jq -r --null-input --arg version "$(sed 's/^[^@]*@//' < "$IMAGE_REFS_FILE")" "$filter" +jq -r --null-input --arg version "$(sed 's/^[^@]*@//' < "$image_refs_file")" "$filter" + +rm -r "$oci_dir" +rm "$image_refs_file" +rm "$INPUT_FILE"