|
1 | 1 | #!/bin/bash
|
2 |
| -set -e |
| 2 | +set -eu |
3 | 3 |
|
| 4 | +self="$(basename "$BASH_SOURCE")" |
4 | 5 | cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
|
5 | 6 |
|
6 |
| -url='git://github.com/docker-library/rails' |
| 7 | +# get the most recent commit which modified any of "$@" |
| 8 | +fileCommit() { |
| 9 | + git log -1 --format='format:%H' HEAD -- "$@" |
| 10 | +} |
7 | 11 |
|
8 |
| -echo '# maintainer: InfoSiftr <[email protected]> (@infosiftr)' |
| 12 | +# get the most recent commit which modified "$1/Dockerfile" or any file COPY'd from "$1/Dockerfile" |
| 13 | +dirCommit() { |
| 14 | + local dir="$1"; shift |
| 15 | + ( |
| 16 | + cd "$dir" |
| 17 | + fileCommit \ |
| 18 | + Dockerfile \ |
| 19 | + $(git show HEAD:./Dockerfile | awk ' |
| 20 | + toupper($1) == "COPY" { |
| 21 | + for (i = 2; i < NF; i++) { |
| 22 | + print $i |
| 23 | + } |
| 24 | + } |
| 25 | + ') |
| 26 | + ) |
| 27 | +} |
9 | 28 |
|
10 |
| -commit="$(git log -1 --format='format:%H' -- Dockerfile $(awk 'toupper($1) == "COPY" { for (i = 2; i < NF; i++) { print $i } }' Dockerfile))" |
11 |
| -fullVersion="$(grep -m1 'ENV RAILS_VERSION ' Dockerfile | cut -d' ' -f3)" |
| 29 | +cat <<-EOH |
| 30 | +# this file is generated via https://github.com/docker-library/rails/blob/$(fileCommit "$self")/$self |
| 31 | +
|
| 32 | +Maintainers: Tianon Gravi <[email protected]> (@tianon), |
| 33 | + Joseph Ferguson <[email protected]> (@yosifkit) |
| 34 | +GitRepo: https://github.com/docker-library/rails.git |
| 35 | +EOH |
| 36 | + |
| 37 | +# prints "$2$1$3$1...$N" |
| 38 | +join() { |
| 39 | + local sep="$1"; shift |
| 40 | + local out; printf -v out "${sep//%/%%}%s" "$@" |
| 41 | + echo "${out#$sep}" |
| 42 | +} |
| 43 | + |
| 44 | +commit="$(dirCommit .)" |
| 45 | + |
| 46 | +fullVersion="$(git show "$commit":Dockerfile | awk '$1 == "ENV" && $2 == "RAILS_VERSION" { print $3; exit }')" |
12 | 47 |
|
13 | 48 | versionAliases=()
|
14 | 49 | while [ "${fullVersion%.*}" != "$fullVersion" ]; do
|
|
18 | 53 | versionAliases+=( $fullVersion latest )
|
19 | 54 |
|
20 | 55 | echo
|
21 |
| -for va in "${versionAliases[@]}"; do |
22 |
| - echo "$va: ${url}@${commit}" |
23 |
| -done |
| 56 | +cat <<-EOE |
| 57 | + Tags: $(join ', ' "${versionAliases[@]}") |
| 58 | + GitCommit: $commit |
| 59 | +EOE |
24 | 60 |
|
25 | 61 | for variant in onbuild; do
|
| 62 | + commit="$(dirCommit "$variant")" |
| 63 | + |
| 64 | + variantAliases=( "$variant" ) |
| 65 | + |
26 | 66 | echo
|
27 |
| - commit="$(cd "$variant" && git log -1 --format='format:%H' -- Dockerfile $(awk 'toupper($1) == "COPY" { for (i = 2; i < NF; i++) { print $i } }' Dockerfile))" |
28 |
| - echo "$variant: ${url}@${commit} $variant" |
| 67 | + cat <<-EOE |
| 68 | + Tags: $(join ', ' "${variantAliases[@]}") |
| 69 | + GitCommit: $commit |
| 70 | + Directory: $variant |
| 71 | + EOE |
29 | 72 | done
|
0 commit comments