generate-dockerfile-links-partial.sh 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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="${line%%: *}"
  16. repoDir="${line#*: }"
  17. if [ -z "${repoDirTags[$repoDir]}" ]; then
  18. repoDirs+=( "$repoDir" )
  19. else
  20. repoDirTags["$repoDir"]+=', '
  21. fi
  22. repoDirTags["$repoDir"]+='`'"$tag"'`'
  23. done
  24. echo '# Tags and `Dockerfile` links'
  25. echo
  26. for repoDir in "${repoDirs[@]}"; do
  27. if [[ "$repoDir" != *github.com* ]]; then
  28. # skip non-github.com for now
  29. continue
  30. fi
  31. # split out some data
  32. gitUrl="${repoDir%%@*}"
  33. commitDir="${repoDir#*@}"
  34. commit="${commitDir%% *}"
  35. dir="${commitDir#* }"
  36. if [ "$dir" = "$commitDir" ]; then
  37. dir=''
  38. fi
  39. # sanitize some data
  40. gitUrl="${gitUrl#git://}"
  41. gitUrl="${gitUrl%/}"
  42. gitUrl="${gitUrl%.git}"
  43. dir="${dir#/}"
  44. dir="${dir%/}"
  45. [ -z "$dir" ] || dir="$dir/"
  46. url="https://$gitUrl/blob/$commit/${dir}Dockerfile"
  47. echo '- ['"${repoDirTags["$repoDir"]}"' (*'"${dir}Dockerfile"'*)]('"$url"')'
  48. done
  49. echo