1
- #! /bin/bash
1
+ #! /usr/ bin/env bash
2
2
set -eu
3
3
4
4
declare -A aliases=(
@@ -9,11 +9,13 @@ declare -A aliases=(
9
9
self=" $( basename " $BASH_SOURCE " ) "
10
10
cd " $( dirname " $( readlink -f " $BASH_SOURCE " ) " ) "
11
11
12
- versions=( * / )
13
- versions=( " ${versions[@]%/ } " )
12
+ if [ " $# " -eq 0 ]; then
13
+ versions=" $( jq -r ' keys | map(@sh) | join(" ")' versions.json) "
14
+ eval " set -- $versions "
15
+ fi
14
16
15
17
# sort version numbers with highest first
16
- IFS=$' \n ' ; versions=( $( echo " ${versions[*]} " | sort -rV) ); unset IFS
18
+ IFS=$' \n ' ; set -- $( sort -rV <<< " $* " ) ; unset IFS
17
19
18
20
# get the most recent commit which modified any of "$@"
19
21
fileCommit () {
@@ -68,51 +70,50 @@ join() {
68
70
echo " ${out# $sep } "
69
71
}
70
72
71
- for version in " ${versions[@]} " ; do
72
- for v in \
73
- ' ' alpine \
74
- ; do
75
- dir=" $version ${v: +/ $v } "
76
- variant=" $( basename " $v " ) "
73
+ for version; do
74
+ export version
77
75
78
- [ -f " $dir /Dockerfile" ] || continue
76
+ variants=" $( jq -r ' .[env.version].variants | map(@sh) | join(" ")' versions.json) "
77
+ eval " variants=( $variants )"
79
78
80
- commit=" $( dirCommit " $dir " ) "
79
+ alpine=" $( jq -r ' .[env.version].alpine' versions.json) "
80
+ debian=" $( jq -r ' .[env.version].debian' versions.json) "
81
81
82
- fullVersion=" $( git show " $commit " :" $dir /Dockerfile" | awk ' $1 == "ENV" && $2 == "REDIS_VERSION" { print $3; exit }' ) "
83
-
84
- versionAliases=()
85
- while [ " $fullVersion " != " $version " -a " ${fullVersion% [.]* } " != " $fullVersion " ]; do
86
- versionAliases+=( $fullVersion )
87
- fullVersion=" ${fullVersion% [.]* } "
88
- done
89
- versionAliases+=(
90
- $version
91
- ${aliases[$version]:- }
92
- )
93
-
94
- if [ -n " $variant " ]; then
95
- variantAliases=( " ${versionAliases[@]/%/ -$variant } " )
96
- variantAliases=( " ${variantAliases[@]// latest-/ } " )
97
- else
98
- variantAliases=( " ${versionAliases[@]} " )
99
- fi
82
+ fullVersion=" $( jq -r ' .[env.version].version' versions.json) "
100
83
101
- variantParent=" $( awk ' toupper($1) == "FROM" { print $2 }' " $dir /Dockerfile" ) "
84
+ versionAliases=()
85
+ while [ " $fullVersion " != " $version " -a " ${fullVersion% [.]* } " != " $fullVersion " ]; do
86
+ versionAliases+=( $fullVersion )
87
+ fullVersion=" ${fullVersion% [.]* } "
88
+ done
89
+ versionAliases+=(
90
+ $version
91
+ ${aliases[$version]:- }
92
+ )
102
93
103
- suite=" ${variantParent#*: } " # "jessie-slim", "stretch"
104
- suite=" ${suite% -slim} " # "jessie", "stretch"
105
-
106
- if [ " $v " = ' alpine' ]; then
107
- suite=" alpine$suite " # "alpine3.8"
108
- suiteAliases=( " ${versionAliases[@]/%/ -$suite } " )
109
- else
110
- suiteAliases=( " ${variantAliases[@]/%/ -$suite } " )
111
- fi
112
- suiteAliases=( " ${suiteAliases[@]// latest-/ } " )
113
- variantAliases+=( " ${suiteAliases[@]} " )
94
+ for variant in " ${variants[@]} " ; do
95
+ dir=" $version /$variant "
96
+ commit=" $( dirCommit " $dir " ) "
97
+
98
+ variantParent=" $( awk ' toupper($1) == "FROM" { print $2 }' " $dir /Dockerfile" ) "
114
99
variantArches=" ${parentRepoToArches[$variantParent]} "
115
100
101
+ variantAliases=( " ${versionAliases[@]/%/ -$variant } " )
102
+ variantAliases=( " ${variantAliases[@]// latest-/ } " )
103
+
104
+ case " $variant " in
105
+ " $debian " )
106
+ variantAliases=(
107
+ " ${versionAliases[@]} "
108
+ " ${variantAliases[@]} "
109
+ )
110
+ ;;
111
+ alpine" $alpine " )
112
+ variantAliases+=( " ${versionAliases[@]/%/ -alpine} " )
113
+ variantAliases=( " ${variantAliases[@]// latest-/ } " )
114
+ ;;
115
+ esac
116
+
116
117
echo
117
118
cat << -EOE
118
119
Tags: $( join ' , ' " ${variantAliases[@]} " )
0 commit comments