diff --git a/generate-dockerfile-links-partial.sh b/generate-dockerfile-links-partial.sh new file mode 100755 index 000000000..afce41152 --- /dev/null +++ b/generate-dockerfile-links-partial.sh @@ -0,0 +1,60 @@ +#!/bin/bash +set -e + +repo="$1" +if [ -z "$repo" ]; then + echo >&2 "usage: $0 repo" + echo >&2 " ie: $0 hylang" + exit 1 +fi + +IFS=$'\n' +lines=( $(curl -sSL 'https://raw.githubusercontent.com/docker-library/official-images/master/library/'"$repo" | grep -vE '^$|^#') ) +unset IFS + +repoDirs=() +declare -A repoDirTags=() + +for line in "${lines[@]}"; do + tag="${line%%: *}" + repoDir="${line#*: }" + if [ -z "${repoDirTags[$repoDir]}" ]; then + repoDirTags["$repoDir"]="$tag" + repoDirs+=( "$repoDir" ) + else + repoDirTags["$repoDir"]+=', '"$tag" + fi +done + +echo '# Tags and `Dockerfile` links' +echo + +for repoDir in "${repoDirs[@]}"; do + if [[ "$repoDir" != *github.com* ]]; then + # skip non-github.com for now + continue + fi + + # split out some data + gitUrl="${repoDir%%@*}" + commitDir="${repoDir#*@}" + commit="${commitDir%% *}" + dir="${commitDir#* }" + if [ "$dir" = "$commitDir" ]; then + dir='' + fi + + # sanitize some data + gitUrl="${gitUrl#git://}" + gitUrl="${gitUrl%/}" + gitUrl="${gitUrl%.git}" + dir="${dir#/}" + dir="${dir%/}" + [ -z "$dir" ] || dir="$dir/" + + url="https://$gitUrl/blob/$commit/${dir}Dockerfile" + + echo '- ['"${repoDirTags["$repoDir"]}"']('"$url"')' +done + +echo