1
1
#! /bin/bash
2
- set -e
2
+ set -Eeuo pipefail
3
3
4
4
cd " $( dirname " $( readlink -f " $BASH_SOURCE " ) " ) "
5
5
@@ -9,25 +9,51 @@ if [ ${#versions[@]} -eq 0 ]; then
9
9
fi
10
10
versions=( " ${versions[@]%/ } " )
11
11
12
- pipVersion=" $( curl -sSL ' https://pypi.python. org/pypi/pip/json' | awk -F ' " ' ' $2 == " version" { print $4 } ' ) "
12
+ pipVersion=" $( curl -fsSL ' https://pypi.org/pypi/pip/json' | jq -r .info. version) "
13
13
14
14
for version in " ${versions[@]} " ; do
15
15
case " $version " in
16
16
3) pypy=' pypy3' ;;
17
17
2) pypy=' pypy2' ;;
18
18
* ) echo >&2 " error: unknown pypy variant $version " ; exit 1 ;;
19
19
esac
20
+
20
21
# <td class="name"><a class="execute" href="/pypy/pypy/downloads/pypy-2.4.0-linux64.tar.bz2">pypy-2.4.0-linux64.tar.bz2</a></td>
21
22
# <td class="name"><a class="execute" href="/pypy/pypy/downloads/pypy3-2.4.0-linux64.tar.bz2">pypy3-2.4.0-linux64.tar.bz2</a></td>
22
- fullVersion=" $( curl -sSL ' https://bitbucket.org/pypy/pypy/downloads/' | grep -E " $pypy " ' -v([0-9.]+(-alpha[0-9]*)?)-linux64.tar.bz2' | sed -r ' s/^.*' " $pypy " ' -v([0-9.]+(-alpha[0-9]*)?)-linux64.tar.bz2.*$/\1/' | sort -V | tail -1) "
23
+ IFS=$' \n '
24
+ tryVersions=( $(
25
+ curl -fsSL ' https://bitbucket.org/pypy/pypy/downloads/' \
26
+ | grep -E " $pypy " ' -v([0-9.]+(-alpha[0-9]*)?)-linux64.tar.bz2' \
27
+ | sed -r ' s/^.*' " $pypy " ' -v([0-9.]+(-alpha[0-9]*)?)-linux64.tar.bz2.*$/\1/' \
28
+ | sort -rV
29
+ ) )
30
+ unset IFS
23
31
24
- # <p>pypy2.7-5.4.0 sha256:</p>
25
- # <pre class="literal-block">
26
- # ...
27
- # bdfea513d59dcd580970cb6f79f3a250d00191fd46b68133d5327e924ca845f8 pypy2-v5.4.0-linux64.tar.bz2
28
- # ...
29
- # </pre>
30
- sha256sum=" $( curl -sSL ' http://pypy.org/download.html' | grep -m1 -E ' [a-f0-9]{64} ' " $pypy -v$fullVersion " ' -linux64.tar.bz2' | cut -d' ' -f1) "
32
+ fullVersion=
33
+ sha256sum=
34
+ for tryVersion in " ${tryVersions[@]} " ; do
35
+ # <p>pypy2.7-5.4.0 sha256:</p>
36
+ # <pre class="literal-block">
37
+ # ...
38
+ # bdfea513d59dcd580970cb6f79f3a250d00191fd46b68133d5327e924ca845f8 pypy2-v5.4.0-linux64.tar.bz2
39
+ # ...
40
+ # </pre>
41
+ if \
42
+ sha256sum=" $(
43
+ curl -fsSL ' http://pypy.org/download.html' \
44
+ | grep -m1 -E ' [a-f0-9]{64} ' " $pypy -v$tryVersion " ' -linux64.tar.bz2' \
45
+ | cut -d' ' -f1
46
+ ) " \
47
+ && [ -n " $sha256sum " ] \
48
+ ; then
49
+ fullVersion=" $tryVersion "
50
+ break
51
+ fi
52
+ done
53
+ if [ -z " $fullVersion " ]; then
54
+ echo >&2 " error: cannot find suitable release for '$version '"
55
+ exit 1
56
+ fi
31
57
32
58
(
33
59
set -x
0 commit comments