Skip to content

Commit 113e398

Browse files
committed
Sync generate-stackbrew-library.sh with haproxy
1 parent 19e70e3 commit 113e398

File tree

1 file changed

+35
-27
lines changed

1 file changed

+35
-27
lines changed

generate-stackbrew-library.sh

Lines changed: 35 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
#!/bin/bash
2-
set -eu
1+
#!/usr/bin/env bash
2+
set -Eeuo pipefail
33

44
declare -A aliases=(
55
[4]='latest'
@@ -8,11 +8,14 @@ declare -A aliases=(
88
self="$(basename "$BASH_SOURCE")"
99
cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
1010

11-
versions=( */ )
12-
versions=( "${versions[@]%/}" )
11+
if [ "$#" -eq 0 ]; then
12+
versions=( */ )
13+
versions=( "${versions[@]%/}" )
14+
eval "set -- $versions"
15+
fi
1316

1417
# sort version numbers with highest first
15-
IFS=$'\n'; versions=( $(echo "${versions[*]}" | sort -rV) ); unset IFS
18+
IFS=$'\n'; set -- $(sort -rV <<<"$*"); unset IFS
1619

1720
# get the most recent commit which modified any of "$@"
1821
fileCommit() {
@@ -38,17 +41,19 @@ dirCommit() {
3841

3942
getArches() {
4043
local repo="$1"; shift
41-
local officialImagesUrl='https://github.com/docker-library/official-images/raw/master/library/'
44+
local officialImagesBase="${BASHBREW_LIBRARY:-https://github.com/docker-library/official-images/raw/HEAD/library}/"
4245

43-
eval "declare -g -A parentRepoToArches=( $(
44-
find -name 'Dockerfile' -exec awk '
45-
toupper($1) == "FROM" && $2 !~ /^('"$repo"'|scratch|microsoft\/[^:]+)(:|$)/ {
46-
print "'"$officialImagesUrl"'" $2
46+
local parentRepoToArchesStr
47+
parentRepoToArchesStr="$(
48+
find -name 'Dockerfile' -exec awk -v officialImagesBase="$officialImagesBase" '
49+
toupper($1) == "FROM" && $2 !~ /^('"$repo"'|scratch|.*\/.*)(:|$)/ {
50+
printf "%s%s\n", officialImagesBase, $2
4751
}
4852
' '{}' + \
4953
| sort -u \
50-
| xargs bashbrew cat --format '[{{ .RepoName }}:{{ .TagName }}]="{{ join " " .TagEntry.Architectures }}"'
51-
) )"
54+
| xargs -r bashbrew cat --format '["{{ .RepoName }}:{{ .TagName }}"]="{{ join " " .TagEntry.Architectures }}"'
55+
)"
56+
eval "declare -g -A parentRepoToArches=( $parentRepoToArchesStr )"
5257
}
5358
getArches 'adminer'
5459

@@ -66,7 +71,9 @@ join() {
6671
echo "${out#$sep}"
6772
}
6873

69-
for version in "${versions[@]}"; do
74+
for version; do
75+
export version
76+
7077
commit="$(dirCommit "$version")"
7178

7279
fullVersion="$(git show "$commit":"$version/Dockerfile" | awk '
@@ -86,30 +93,31 @@ for version in "${versions[@]}"; do
8693
${aliases[$version]:-}
8794
)
8895

89-
for variant in \
90-
'' \
91-
fastcgi \
92-
; do
96+
for variant in '' fastcgi; do
97+
export variant
9398
dir="$version${variant:+/$variant}"
94-
[ -f "$dir/Dockerfile" ] || continue
95-
variant="${variant:-standalone}"
99+
if [ ! -d "$dir" ]; then
100+
continue
101+
fi
96102

97103
commit="$(dirCommit "$dir")"
98104

99-
slash='/'
100-
variantAliases=( "${versionAliases[@]/%/-${variant//$slash/-}}" )
101-
variantAliases=( "${variantAliases[@]//latest-/}" )
102-
if [ "$variant" = 'standalone' ]; then
103-
variantAliases+=( "${versionAliases[@]}" )
105+
if [ -n "$variant" ]; then
106+
variantAliases=( "${versionAliases[@]/%/-$variant}" )
107+
variantAliases=( "${variantAliases[@]//latest-/}" )
108+
else
109+
variantAliases=( "${versionAliases[@]}" )
110+
variantAliases+=( "${versionAliases[@]/%/-standalone}" )
111+
variantAliases=( "${variantAliases[@]//latest-/}" )
104112
fi
105113

106-
variantParent="$(awk 'toupper($1) == "FROM" { print $2 }' "$dir/Dockerfile")"
107-
variantArches="${parentRepoToArches[$variantParent]}"
114+
parent="$(awk 'toupper($1) == "FROM" { print $2 }' "$dir/Dockerfile")"
115+
arches="${parentRepoToArches[$parent]}"
108116

109117
echo
110118
cat <<-EOE
111119
Tags: $(join ', ' "${variantAliases[@]}")
112-
Architectures: $(join ', ' $variantArches)
120+
Architectures: $(join ', ' $arches)
113121
GitCommit: $commit
114122
Directory: $dir
115123
EOE

0 commit comments

Comments
 (0)