Skip to content
This repository has been archived by the owner. It is now read-only.

Commit bd6822c

Browse files
committed
Convert "generate-stackbrew-library.sh" to output the new 2822-based format
1 parent ff58156 commit bd6822c

File tree

1 file changed

+53
-10
lines changed

1 file changed

+53
-10
lines changed

generate-stackbrew-library.sh

Lines changed: 53 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,49 @@
11
#!/bin/bash
2-
set -e
2+
set -eu
33

4+
self="$(basename "$BASH_SOURCE")"
45
cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
56

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+
}
711

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+
}
928

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 }')"
1247

1348
versionAliases=()
1449
while [ "${fullVersion%.*}" != "$fullVersion" ]; do
@@ -18,12 +53,20 @@ done
1853
versionAliases+=( $fullVersion latest )
1954

2055
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
2460

2561
for variant in onbuild; do
62+
commit="$(dirCommit "$variant")"
63+
64+
variantAliases=( "$variant" )
65+
2666
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
2972
done

0 commit comments

Comments
 (0)