-
Notifications
You must be signed in to change notification settings - Fork 224
/
versions.sh
executable file
·72 lines (57 loc) · 1.67 KB
/
versions.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/usr/bin/env bash
set -Eeuo pipefail
[ -e versions.json ]
dir="$(readlink -ve "$BASH_SOURCE")"
dir="$(dirname "$dir")"
source "$dir/../.libs/git.sh"
variants=(
''
'rc'
'0.13'
# TODO add this back when I figure out a clean way to do something more akin to a "weekly snapshot" or something so it doesn't have an update every single day
#'dev'
)
json='{}'
for variant in "${variants[@]}"; do
export variant
bk=
case "$variant" in
'')
bk="$(
versions_hooks+=( hook_no-prereleases )
git-tags 'https://github.com/moby/buildkit.git'
)"
;;
rc)
bk="$(
hook_prereleases-only() { ! hook_no-prereleases "$@"; }
versions_hooks+=( hook_prereleases-only )
git-tags 'https://github.com/moby/buildkit.git'
)"
;;
[0-9]*.[0-9]*)
bk="$(
hook_variant-version() {
case "$3" in "$variant" | "$variant".*) return 0 ;; esac
return 1
}
versions_hooks+=( hook_no-prereleases hook_variant-version )
git-tags 'https://github.com/moby/buildkit.git'
)"
;;
dev)
bk="$(git-ref-commit 'https://github.com/moby/buildkit.git' 'HEAD')"
;;
*) echo >&2 "error: unknown variant: '$variant'"; exit 1 ;;
esac
[ -n "$bk" ]
commit="$(jq <<<"$bk" -r '.commit // .version')"
go="$(wget -qO- "https://github.com/moby/buildkit/raw/$commit/go.mod")"
go="$(awk <<<"$go" '$1 == "go" { if ($2 ~ /^[0-9]+[.][0-9]+[.][0-9]+$/) { sub(/[.][0-9]+$/, "", $2) } print $2; exit }')"
echo >&2 "${variant:-stable} go: $go"
json="$(jq <<<"$json" --argjson bk "$bk" --arg go "$go" '
if env.variant == "" then . else .[env.variant] end += $bk + { go: { version: $go } }
| .variants += [ env.variant ]
')"
done
jq <<<"$json" '.' > versions.json