1
1
#! /usr/bin/env bash
2
2
3
+ # define constants
3
4
BASE_DIR=" $( cd " $( dirname " $0 " ) " && pwd) "
4
5
COMMIT_ID=" $( git rev-parse --verify HEAD) "
6
+ COMMIT_MESSAGE=' Change tags in DOCKERHUB.md and README.md'
5
7
DISTS=(' alpine' ' debian' )
8
+ HEADING_FOR_OVERVIEW=' ## Overview'
9
+ HEADING_FOR_TAGS=" ## Supported tags and respective \` Dockerfile\` links"
6
10
JSON=" $( cat ./versions.json) "
7
11
LATEST_VERSIONS_KEYS=()
8
12
OFFICIAL_VERSIONS_KEYS=()
13
+ PROGRAM=" $( basename " $0 " ) "
9
14
REPOSITORY=' https://github.com/dstmodders/docker-ktools'
10
15
11
16
extract_and_sort_keys () {
@@ -18,12 +23,32 @@ mapfile -t OFFICIAL_VERSIONS_KEYS < <(extract_and_sort_keys '.official')
18
23
19
24
readonly BASE_DIR
20
25
readonly COMMIT_ID
26
+ readonly COMMIT_MESSAGE
21
27
readonly DISTS
28
+ readonly HEADING_FOR_OVERVIEW
29
+ readonly HEADING_FOR_TAGS
22
30
readonly JSON
23
31
readonly LATEST_VERSIONS_KEYS
24
32
readonly OFFICIAL_VERSIONS_KEYS
33
+ readonly PROGRAM
25
34
readonly REPOSITORY
26
35
36
+ # define flags
37
+ FLAG_COMMIT=0
38
+
39
+ usage () {
40
+ cat << EOF
41
+ Generate supported tags.
42
+
43
+ Usage:
44
+ $PROGRAM [flags]
45
+
46
+ Flags:
47
+ -c, --commit commit changes
48
+ -h, --help help for $PROGRAM
49
+ EOF
50
+ }
51
+
27
52
print_url () {
28
53
local tags=" $1 "
29
54
local commit=" $2 "
@@ -32,77 +57,143 @@ print_url() {
32
57
echo " - $url "
33
58
}
34
59
35
- cd " $BASE_DIR " || exit 1
36
-
37
- printf " ## Supported tags and respective \` Dockerfile\` links\n\n"
38
-
39
60
# reference:
40
61
# 4.5.1-imagemagick-7.1.1-39-alpine, 4.5.1-alpine, 4.5.1, alpine, latest
41
62
# 4.5.1-imagemagick-7.1.1-39-debian, 4.5.1-debian, debian
42
63
# 4.5.0-imagemagick-7.1.1-39-alpine, 4.5.0-alpine, 4.5.0
43
64
# 4.5.0-imagemagick-7.1.1-39-debian, 4.5.0-debian
44
- for key in " ${LATEST_VERSIONS_KEYS[@]} " ; do
45
- for dist in " ${DISTS[@]} " ; do
46
- imagemagick_version=" $( jq -r " .latest | .[$key ] | .imagemagick_version" <<< " $JSON" ) "
47
- latest=" $( jq -r " .latest | .[$key ] | .latest" <<< " $JSON" ) "
48
- version=" $( jq -r " .latest | .[$key ] | .version" <<< " $JSON" ) "
49
-
50
- tag_version_imagemagick_version_dist=" $version -imagemagick-$imagemagick_version -$dist "
51
- tag_version_dist=" $version -$dist "
52
- tag_version=" $version "
53
- tag_dist=" $dist "
54
-
55
- tags=" \` $tag_version_imagemagick_version_dist \` , \` $tag_version_dist \` "
56
- case " $dist " in
57
- alpine)
58
- tags=" $tags , \` $tag_version \` "
59
- if [ " $latest " == ' true' ]; then
60
- tags=" $tags , \` $tag_dist \` , \` latest\` "
61
- fi
62
- ;;
63
- debian)
64
- if [ " $latest " == ' true' ]; then
65
- tags=" $tags , \` $tag_dist \` "
66
- fi
67
- ;;
68
- esac
69
-
70
- print_url " $tags " " $COMMIT_ID " " latest/$dist "
65
+ print_latest_tags () {
66
+ for key in " ${LATEST_VERSIONS_KEYS[@]} " ; do
67
+ for dist in " ${DISTS[@]} " ; do
68
+ imagemagick_version=" $( jq -r " .latest | .[$key ] | .imagemagick_version" <<< " $JSON" ) "
69
+ latest=" $( jq -r " .latest | .[$key ] | .latest" <<< " $JSON" ) "
70
+ version=" $( jq -r " .latest | .[$key ] | .version" <<< " $JSON" ) "
71
+
72
+ tag_version_imagemagick_version_dist=" $version -imagemagick-$imagemagick_version -$dist "
73
+ tag_version_dist=" $version -$dist "
74
+ tag_version=" $version "
75
+ tag_dist=" $dist "
76
+
77
+ tags=" \` $tag_version_imagemagick_version_dist \` , \` $tag_version_dist \` "
78
+ case " $dist " in
79
+ alpine)
80
+ tags=" $tags , \` $tag_version \` "
81
+ if [ " $latest " == ' true' ]; then
82
+ tags=" $tags , \` $tag_dist \` , \` latest\` "
83
+ fi
84
+ ;;
85
+ debian)
86
+ if [ " $latest " == ' true' ]; then
87
+ tags=" $tags , \` $tag_dist \` "
88
+ fi
89
+ ;;
90
+ esac
91
+
92
+ print_url " $tags " " $COMMIT_ID " " latest/$dist "
93
+ done
71
94
done
72
- done
95
+ }
73
96
74
97
# reference:
75
98
# official-4.4.0-imagemagick-6.9.13-17-alpine, official-4.4.0-alpine, official-4.4.0, official-alpine, official-latest, official
76
99
# official-4.4.0-imagemagick-6.9.13-17-debian, official-4.4.0-debian, official-debian
77
100
# official-4.3.1-imagemagick-6.9.13-17-alpine, official-4.3.1-alpine, official-4.3.1
78
101
# official-4.3.1-imagemagick-6.9.13-17-debian, official-4.3.1-debian
79
- for key in " ${OFFICIAL_VERSIONS_KEYS[@]} " ; do
80
- for dist in " ${DISTS[@]} " ; do
81
- prefix=' official-'
82
- imagemagick_version=" $( jq -r " .official | .[$key ] | .imagemagick_version" <<< " $JSON" ) "
83
- latest=" $( jq -r " .official | .[$key ] | .latest" <<< " $JSON" ) "
84
- version=" $( jq -r " .official | .[$key ] | .version" <<< " $JSON" ) "
85
-
86
- tag_version_imagemagick_version_dist=" $prefix$version -imagemagick-$imagemagick_version -$dist "
87
- tag_version_dist=" $prefix$version -$dist "
88
- tag_version=" $prefix$version "
89
- tag_dist=" $prefix$dist "
90
-
91
- tags=" \` $tag_version_imagemagick_version_dist \` , \` $tag_version_dist \` "
92
- case " $dist " in
93
- alpine)
94
- tags=" $tags , \` $tag_version \` "
95
- if [ " $latest " == ' true' ]; then
96
- tags=" $tags , \` $tag_dist \` , \` $( printf ' %slatest' " $prefix " ) \` , \` official\` "
97
- fi
98
- ;;
99
- debian)
100
- if [ " $latest " == ' true' ]; then
101
- tags=" $tags , \` $tag_dist \` "
102
- fi
103
- ;;
104
- esac
105
-
106
- print_url " $tags " " $COMMIT_ID " " official/$dist "
102
+ print_official_tags () {
103
+ for key in " ${OFFICIAL_VERSIONS_KEYS[@]} " ; do
104
+ for dist in " ${DISTS[@]} " ; do
105
+ prefix=' official-'
106
+ imagemagick_version=" $( jq -r " .official | .[$key ] | .imagemagick_version" <<< " $JSON" ) "
107
+ latest=" $( jq -r " .official | .[$key ] | .latest" <<< " $JSON" ) "
108
+ version=" $( jq -r " .official | .[$key ] | .version" <<< " $JSON" ) "
109
+
110
+ tag_version_imagemagick_version_dist=" $prefix$version -imagemagick-$imagemagick_version -$dist "
111
+ tag_version_dist=" $prefix$version -$dist "
112
+ tag_version=" $prefix$version "
113
+ tag_dist=" $prefix$dist "
114
+
115
+ tags=" \` $tag_version_imagemagick_version_dist \` , \` $tag_version_dist \` "
116
+ case " $dist " in
117
+ alpine)
118
+ tags=" $tags , \` $tag_version \` "
119
+ if [ " $latest " == ' true' ]; then
120
+ tags=" $tags , \` $tag_dist \` , \` $( printf ' %slatest' " $prefix " ) \` , \` official\` "
121
+ fi
122
+ ;;
123
+ debian)
124
+ if [ " $latest " == ' true' ]; then
125
+ tags=" $tags , \` $tag_dist \` "
126
+ fi
127
+ ;;
128
+ esac
129
+
130
+ print_url " $tags " " $COMMIT_ID " " official/$dist "
131
+ done
132
+ done
133
+ }
134
+
135
+ replace () {
136
+ local content=" $1 "
137
+ for file in ./DOCKERHUB.md ./README.md; do
138
+ sed -i " /$HEADING_FOR_TAGS /,/$HEADING_FOR_OVERVIEW / {
139
+ /$HEADING_FOR_TAGS /!{
140
+ /$HEADING_FOR_OVERVIEW /!d
141
+ }
142
+ /$HEADING_FOR_TAGS /!b
143
+ r /dev/stdin
144
+ d
145
+ }" " $file " <<< " $content"
107
146
done
147
+ }
148
+
149
+ cd " $BASE_DIR /.." || exit 1
150
+
151
+ while [ $# -gt 0 ]; do
152
+ key=" $1 "
153
+ case " $key " in
154
+ -c|--commit)
155
+ FLAG_COMMIT=1
156
+ ;;
157
+ -h|--help)
158
+ usage
159
+ exit 0
160
+ ;;
161
+ -* )
162
+ print_error ' unrecognized flag'
163
+ exit 1
164
+ ;;
165
+ * )
166
+ ;;
167
+ esac
168
+ shift 1
108
169
done
170
+
171
+ # define extra constants
172
+ readonly FLAG_COMMIT
173
+
174
+ printf " %s\n\n" " $HEADING_FOR_TAGS "
175
+
176
+ if [ " $FLAG_COMMIT " -eq 1 ]; then
177
+ latest_tags=" $( print_latest_tags) "
178
+ official_tags=" $( print_official_tags) "
179
+ echo " $latest_tags "
180
+ echo " $official_tags "
181
+ echo ' ---'
182
+ if [ " $FLAG_COMMIT " -eq 1 ]; then
183
+ replace " $HEADING_FOR_TAGS " $' \n ' $' \n ' " $latest_tags " $' \n ' " $official_tags " $' \n '
184
+ printf ' Committing...'
185
+ git add \
186
+ DOCKERHUB.md \
187
+ README.md
188
+ if [ -n " $( git diff --cached --name-only) " ]; then
189
+ printf ' \n'
190
+ echo ' ---'
191
+ git commit -m " $COMMIT_MESSAGE "
192
+ else
193
+ printf ' Skipped\n'
194
+ fi
195
+ fi
196
+ else
197
+ print_latest_tags
198
+ print_official_tags
199
+ fi
0 commit comments