@@ -47,18 +47,31 @@ generated_warning() {
4747
4848travisEnv=
4949for version in " ${versions[@]} " ; do
50- # <span class="release-number"><a href="/downloads/release/python-278/">Python 2.7.8</a></span>
51- # <span class="release-number"><a href="/downloads/release/python-341/">Python 3.4.1</a></span>
52- fullVersion=" $( curl -fsSL ' https://www.python.org/downloads/' | awk -F ' Python |</a>' ' /<span class="release-number"><a[^>]+>Python ' " $version " ' ./ { print $2 }' | grep -v ' rc' | sort -V | tail -1) "
53- # TODO figure out a better way to handle RCs than just filtering them out
50+ rcGrepV=' -v'
51+ rcVersion=" ${version% -rc} "
52+ if [ " $rcVersion " != " $version " ]; then
53+ rcGrepV=
54+ fi
55+
56+ possibles=( $( curl -fsSL ' https://www.python.org/ftp/python/' | grep ' <a href="' " $rcVersion ." | sed -r ' s!.*<a href="([^"/]+)/?".*!\1!' | sort -rV) )
57+ fullVersion=
58+ for possible in " ${possibles[@]} " ; do
59+ possibleVersions=( $( curl -fsSL " https://www.python.org/ftp/python/$possible /" | grep ' <a href="Python-' " $rcVersion " ' .*\.tar\.xz"' | sed -r ' s!.*<a href="Python-([^"/]+)\.tar\.xz".*!\1!' | grep $rcGrepV -E -- ' [a-zA-Z]+' | sort -rV) )
60+ if [ " ${# possibleVersions[@]} " -gt 0 ]; then
61+ fullVersion=" ${possibleVersions[0]} "
62+ break
63+ fi
64+ done
65+
5466 if [ -z " $fullVersion " ]; then
5567 {
5668 echo
5769 echo
58- echo " warning : cannot find $version (alpha/beta/rc?)"
70+ echo " error : cannot find $version (alpha/beta/rc?)"
5971 echo
6072 echo
6173 } >&2
74+ exit 1
6275 else
6376 if [[ " $version " != 2.* ]]; then
6477 for variant in \
@@ -86,7 +99,7 @@ for version in "${versions[@]}"; do
8699 (
87100 set -x
88101 sed -ri \
89- -e ' s/^(ENV GPG_KEY) .*/\1 ' " ${gpgKeys[$version ]} " ' /' \
102+ -e ' s/^(ENV GPG_KEY) .*/\1 ' " ${gpgKeys[$rcVersion ]} " ' /' \
90103 -e ' s/^(ENV PYTHON_VERSION) .*/\1 ' " $fullVersion " ' /' \
91104 -e ' s/^(ENV PYTHON_RELEASE) .*/\1 ' " ${fullVersion%% [a-z]* } " ' /' \
92105 -e ' s/^(ENV PYTHON_PIP_VERSION) .*/\1 ' " $pipVersion " ' /' \
0 commit comments