generate-dockerfile-links-partial.sh 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #!/bin/bash
  2. set -e
  3. repo="$1"
  4. if [ -z "$repo" ]; then
  5. echo >&2 "usage: $0 repo"
  6. echo >&2 " ie: $0 hylang"
  7. exit 1
  8. fi
  9. IFS=$'\n'
  10. lines=( $(curl -sSL 'https://raw.githubusercontent.com/docker-library/official-images/master/library/'"$repo" | grep -vE '^$|^#') )
  11. unset IFS
  12. repoDirs=()
  13. declare -A repoDirTags=()
  14. for line in "${lines[@]}"; do
  15. tag="$(echo "$line" | awk -F ': +' '{ print $1 }')"
  16. repoDir="$(echo "$line" | awk -F ': +' '{ print $2 }')"
  17. if [ -z "${repoDirTags[$repoDir]}" ]; then
  18. repoDirs+=( "$repoDir" )
  19. else
  20. repoDirTags["$repoDir"]+=', '
  21. fi
  22. repoDirTags["$repoDir"]+='`'"$tag"'`'
  23. done
  24. for repoDir in "${repoDirs[@]}"; do
  25. if [[ "$repoDir" != *github.com* ]]; then
  26. # skip non-github.com for now
  27. continue
  28. fi
  29. # split out some data
  30. gitUrl="${repoDir%%@*}"
  31. commitDir="${repoDir#*@}"
  32. commit="${commitDir%% *}"
  33. dir="${commitDir#* }"
  34. if [ "$dir" = "$commitDir" ]; then
  35. dir=''
  36. fi
  37. # sanitize some data
  38. gitUrl="${gitUrl#git://}"
  39. gitUrl="${gitUrl%/}"
  40. gitUrl="${gitUrl%.git}"
  41. dir="${dir#/}"
  42. dir="${dir%/}"
  43. [ -z "$dir" ] || dir="$dir/"
  44. url="https://$gitUrl/blob/$commit/${dir}Dockerfile"
  45. echo '- ['"${repoDirTags["$repoDir"]}"' (*'"${dir}Dockerfile"'*)]('"$url"')'
  46. done
  47. echo