#!/bin/sh TARGET="Containerfile.tools" SOURCE="https://codeberg.org/stagex/stagex/raw/branch/main/digests" STAGES="core user pallet bootstrap" TMPFILE="$(mktemp)" DIGESTS_TMP="$(mktemp)" for stage in $STAGES; do curl -fsSL "$SOURCE/$stage.txt" | while read -r digest name; do echo "$name $digest" >> "$DIGESTS_TMP" done done while IFS= read -r line; do case "$line" in FROM*stagex/*) full_image="$(printf '%s' "$line" | awk '{print $2}')" base="${full_image%@sha256:*}" prefix="${base%%stagex/*}" registry="${prefix%/}" path="stagex/${base#*stagex/}" rest="${path#stagex/}" if echo "$rest" | grep -q ':'; then name="${rest%%:*}" tag="${rest#*:}" else name="$rest" tag="" fi digest="$(awk -v n="$name" '$1==n{print $2; exit}' "$DIGESTS_TMP")" if [ -z "$digest" ]; then for stage in $STAGES; do staged_name="$stage-$name" digest="$(awk -v n="$staged_name" '$1==n{print $2; exit}' "$DIGESTS_TMP")" if [ -n "$digest" ]; then name="$staged_name" break fi done fi if [ -n "$digest" ]; then if [ -n "$registry" ]; then image_ref="$registry/stagex/$name" else image_ref="stagex/$name" fi if [ -n "$tag" ]; then image_ref="$image_ref:$tag" fi echo "FROM $image_ref@sha256:$digest AS $name" >> "$TMPFILE" else echo "$line" >> "$TMPFILE" fi ;; *) echo "$line" >> "$TMPFILE" ;; esac done < "$TARGET" mv "$TMPFILE" "$TARGET" rm -f "$DIGESTS_TMP"