Skip to content

Commit 6623258

Browse files
authored
Merge pull request #556 from infosiftr/wild-pipelines
Replace wild unix pipelines with simpler jq 🏌
2 parents 20040ec + e99c982 commit 6623258

File tree

1 file changed

+15
-42
lines changed

1 file changed

+15
-42
lines changed

versions.sh

Lines changed: 15 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -45,47 +45,20 @@ dindLatest="$(
4545

4646
dockerVersions="$(
4747
git ls-remote --tags https://github.com/docker/docker.git \
48-
| cut -d$'\t' -f2 \
49-
| grep '^refs/tags/\(docker-\)\?v[0-9].*$' \
50-
| sed 's!^refs/tags/\(docker-\)\?v!!; s!\^{}$!!' \
51-
| sort -u \
52-
| gawk '
53-
{ data[lines++] = $0 }
54-
55-
# "beta" sorts lower than "tp" even though "beta" is a more preferred release, so we need to explicitly adjust the sorting order for RCs
56-
# also, "18.09.0-ce-beta1" vs "18.09.0-beta3"
57-
function docker_version_compare(i1, v1, i2, v2, l, r) {
58-
l = v1; gsub(/-ce/, "", l); gsub(/-tp/, "-alpha", l)
59-
r = v2; gsub(/-ce/, "", r); gsub(/-tp/, "-alpha", r)
60-
patsplit(l, ltemp, /[^.-]+/)
61-
patsplit(r, rtemp, /[^.-]+/)
62-
for (i = 0; i < length(ltemp) && i < length(rtemp); ++i) {
63-
if (ltemp[i] < rtemp[i]) {
64-
return -1
65-
}
66-
if (ltemp[i] > rtemp[i]) {
67-
return 1
68-
}
69-
}
70-
return 0
71-
}
72-
73-
END {
74-
asort(data, result, "docker_version_compare")
75-
for (i in result) {
76-
print result[i]
77-
}
78-
}
48+
| jq --raw-input --null-input --raw-output '
49+
[ inputs | capture("refs/tags/(docker-)?v(?<version>[0-9.a-z-]+)($|\\^)") | .version ]
50+
| unique_by( split(".") | map(tonumber? // .) )
51+
| reverse[]
7952
'
8053
)"
8154

8255
buildxVersions="$(
8356
git ls-remote --tags https://github.com/docker/buildx.git \
84-
| cut -d$'\t' -f2 \
85-
| grep '^refs/tags/v[0-9].*$' \
86-
| sed 's!^refs/tags/v!!; s!\^{}$!!' \
87-
| grep -vE -- '-rc' \
88-
| sort -ruV
57+
| jq --raw-input --null-input --raw-output '
58+
[ inputs | capture("refs/tags/v(?<version>[0-9.]+)($|\\^)") | .version ]
59+
| unique_by( split(".") | map(tonumber? // .) )
60+
| reverse[]
61+
'
8962
)"
9063
buildx=
9164
buildxVersion=
@@ -133,11 +106,11 @@ fi
133106

134107
composeVersions="$(
135108
git ls-remote --tags https://github.com/docker/compose.git \
136-
| cut -d$'\t' -f2 \
137-
| grep '^refs/tags/v[0-9].*$' \
138-
| sed 's!^refs/tags/v!!; s!\^{}$!!' \
139-
| grep -vE -- '-[a-zA-Z]' \
140-
| sort -ruV
109+
| jq --raw-input --null-input --raw-output '
110+
[ inputs | capture("refs/tags/v(?<version>[0-9.]+)($|\\^)") | .version ]
111+
| unique_by( split(".") | map(tonumber? // .) )
112+
| reverse[]
113+
'
141114
)"
142115
compose=
143116
composeVersion=
@@ -196,7 +169,7 @@ for version in "${versions[@]}"; do
196169
channel='test'
197170
fi
198171

199-
if ! fullVersion="$(grep $rcGrepV -E -- '-(rc|tp|beta)' <<<"$versionOptions" | tail -1)" || [ -z "$fullVersion" ]; then
172+
if ! fullVersion="$(grep $rcGrepV -E -- '-(rc|tp|beta)' <<<"$versionOptions" | head -1)" || [ -z "$fullVersion" ]; then
200173
if currentNull="$(jq -r '.[env.version] == null' versions.json)" && [ "$currentNull" = 'true' ]; then
201174
echo >&2 "warning: skipping '$version' (does not appear to be released yet)"
202175
json="$(jq <<<"$json" -c '.[env.version] = null')"

0 commit comments

Comments
 (0)