|
| 1 | +#!/usr/bin/env bash |
| 2 | +set -Eeuo pipefail |
| 3 | + |
| 4 | +preferredOrder=( alpine debian ) |
| 5 | + |
| 6 | +dir="$(dirname "$BASH_SOURCE")" |
| 7 | +cd "$dir" |
| 8 | + |
| 9 | +commit="$(git log -1 --format='format:%H' HEAD -- .)" |
| 10 | +cat <<-EOH |
| 11 | + Maintainers: Tianon Gravi <tianon@tianon.xyz> (@tianon) |
| 12 | + GitRepo: https://github.com/tianon/gosu.git |
| 13 | + GitCommit: $commit |
| 14 | + Directory: hub |
| 15 | + Builder: buildkit |
| 16 | +EOH |
| 17 | + |
| 18 | +version= |
| 19 | +i=0; jq=; froms=() |
| 20 | +for variant in "${preferredOrder[@]}"; do |
| 21 | + from="$(awk 'toupper($1) == "FROM" { print $2; exit }' "Dockerfile.$variant")" # TODO multi-stage? |
| 22 | + variantVersion="$(awk 'toupper($1) == "ENV" && toupper($2) == "GOSU_VERSION" { print $3; exit }' "Dockerfile.$variant")" |
| 23 | + version="${version:-$variantVersion}" |
| 24 | + if [ "$version" != "$variantVersion" ]; then |
| 25 | + echo >&2 "error: mismatched version in '$variant' ('$version' vs '$variantVersion')" |
| 26 | + exit 1 |
| 27 | + fi |
| 28 | + jq="${jq:+$jq, }$variant: (.[$i].arches | keys_unsorted)" |
| 29 | + froms["$i"]="$from" |
| 30 | + (( i++ )) || : |
| 31 | +done |
| 32 | +arches="$(bashbrew remote arches --json "${froms[@]}" | jq -sc "{ $jq }")" # { alpine: [ "amd64", ... ], debian: [ "amd64", ... ] } |
| 33 | + |
| 34 | +queue="$(jq <<<"$arches" -r 'to_entries | map(@sh "variant=\(.key)\narch=\(.value[])") | map(@sh) | join("\n")')" |
| 35 | +eval "queue=( $queue )" |
| 36 | + |
| 37 | +declare -A seenArches=() |
| 38 | +for item in "${queue[@]}"; do |
| 39 | + eval "$item" # variant=yyy arch=xxx |
| 40 | + [ -n "$variant" ] |
| 41 | + [ -n "$arch" ] |
| 42 | + tags="$variant-$arch" |
| 43 | + sharedTags="$variant, $version-$variant" |
| 44 | + if [ -z "${seenArches["$arch"]:-}" ]; then |
| 45 | + tags+=", $arch" |
| 46 | + sharedTags+=", $version, latest" |
| 47 | + fi |
| 48 | + echo |
| 49 | + echo "Tags: $tags" |
| 50 | + [ -z "$sharedTags" ] || echo "SharedTags: $sharedTags" |
| 51 | + echo "Architectures: $arch" |
| 52 | + echo "File: Dockerfile.$variant" |
| 53 | + : "${seenArches["$arch"]:=1}" |
| 54 | +done |
0 commit comments