| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- #!/bin/bash
- set -eo pipefail
- repo="$1"
- if [ -z "$repo" ]; then
- echo >&2 "usage: $0 repo"
- echo >&2 " ie: $0 hylang"
- exit 1
- fi
- dir="$(dirname "$(readlink -f "$BASH_SOURCE")")"
- repoDir="$dir/../$repo"
- # if we haven't set BASHBREW_LIBRARY explicitly (like Jenkins does, for example), don't trust the local library
- if [ -z "${BASHBREW_LIBRARY:-}" ]; then
- repo="https://github.com/docker-library/official-images/raw/master/library/$repo"
- fi
- IFS=$'\n'
- tags=( $(bashbrew cat -f '
- {{- $archSpecific := getenv "ARCH_SPECIFIC_DOCS" -}}
- {{- range .Entries -}}
- {{- $arch := $archSpecific | ternary arch (.HasArchitecture arch | ternary arch (.Architectures | first)) -}}
- {{- if .HasArchitecture $arch -}}
- {{- join "\n" .Tags -}}
- {{- "\n" -}}
- {{- end -}}
- {{- end -}}
- ' "$repo") )
- unset IFS
- text=
- declare -A includedFiles=()
- for tag in "${tags[@]}"; do
- for f in \
- "$repoDir/variant-$tag.md" "$repoDir/variant-${tag##*-}.md" \
- "$dir/variant-$tag.md" "$dir/variant-${tag##*-}.md" \
- ; do
- if [ -n "${includedFiles[$f]}" ]; then
- # make sure we don't duplicate variant sections
- break
- fi
- if [ -f "$f" ]; then
- includedFiles[$f]=1
- if [ -s "$f" ]; then
- # an empty file can be used to disable a specific "variant" section for an image
- text+=$'\n' # give a little space
- text+="$(< "$f")"
- text+=$'\n' # parameter expansion eats the trailing newline
- fi
- break
- fi
- done
- done
- if [ "$text" ]; then
- buildpacks=
- potentialTags="$(bashbrew list --uniq "$repo" | cut -d: -f2)"
- for tag in $potentialTags; do
- baseImage="$(bashbrew cat -f '{{ .ArchDockerFrom (.TagEntry.Architectures | first) .TagEntry }}' "$repo:$tag")"
- case "$baseImage" in
- buildpack-deps:*-*) ;; # "scm", "curl" -- not large images
- buildpack-deps:*) buildpacks=1; break ;;
- esac
- done
- echo
- echo
- if [ -n "$buildpacks" ]; then
- f='variant-buildpacks.md'
- else
- f='variant.md'
- fi
- [ -f "$repoDir/$f" ] && cat "$repoDir/$f" || cat "$dir/$f"
- echo "$text"
- fi
|