From 39965bba04f42f64baf8321819fd899a4a2942bd Mon Sep 17 00:00:00 2001 From: Luca Bruno Date: Thu, 17 Sep 2015 15:48:06 +0200 Subject: maint script gnome-latest.sh: support point versions, handle 404 errors --- maintainers/scripts/gnome-latest.sh | 59 ++++++++++++++++++++++--------------- 1 file changed, 36 insertions(+), 23 deletions(-) (limited to 'maintainers/scripts') diff --git a/maintainers/scripts/gnome-latest.sh b/maintainers/scripts/gnome-latest.sh index 9186db5fda3d..ccded6e62772 100755 --- a/maintainers/scripts/gnome-latest.sh +++ b/maintainers/scripts/gnome-latest.sh @@ -24,7 +24,7 @@ if [ "$FTP_CLIENT" = "lftp" ]; then } else ls_ftp() { - curl -l "$1"/ + curl -s -l "$1"/ } fi @@ -36,40 +36,53 @@ if [ -z "$majorVersion" ]; then read majorVersion fi +if echo "$majorVersion" | grep -q "[0-9]\+\.[0-9]\+\.[0-9]\+"; then + # not a major version + version="$majorVersion" + majorVersion=$(echo "$majorVersion" | cut -d '.' -f 1,2) +fi + FTPDIR="${GNOME_FTP}/${project}/${majorVersion}" #version=`curl -l ${FTPDIR}/ 2>/dev/null | grep LATEST-IS | sed -e s/LATEST-IS-//` # gnome's LATEST-IS is broken. Do not trust it. -files=$(ls_ftp "${FTPDIR}") -declare -A versions - -for f in $files; do - case $f in +if [ -z "$version" ]; then + files=$(ls_ftp "${FTPDIR}") + declare -A versions + + for f in $files; do + case $f in (LATEST-IS-*|*.news|*.changes|*.sha256sum|*.diff*): - ;; + ;; ($project-*.*.9*.tar.*): - tmp=${f#$project-} - tmp=${tmp%.tar*} - echo "Ignored unstable version ${tmp}" >&2 - ;; + tmp=${f#$project-} + tmp=${tmp%.tar*} + echo "Ignored unstable version ${tmp}" >&2 + ;; ($project-*.tar.*): - tmp=${f#$project-} - tmp=${tmp%.tar*} - versions[${tmp}]=1 - ;; + tmp=${f#$project-} + tmp=${tmp%.tar*} + versions[${tmp}]=1 + ;; (*): - echo "UNKNOWN FILE $f" - ;; - esac -done -echo "Found versions ${!versions[@]}" >&2 -version=`echo ${!versions[@]} | sed -e 's/ /\n/g' | sort -t. -k1,1n -k 2,2n -k 3,3n | tail -n1` -echo "Latest version is: ${version}" >&2 + echo "UNKNOWN FILE $f" + ;; + esac + done + echo "Found versions ${!versions[@]}" >&2 + version=`echo ${!versions[@]} | sed -e 's/ /\n/g' | sort -t. -k1,1n -k 2,2n -k 3,3n | tail -n1` + echo "Latest version is: ${version}" >&2 +fi name=${project}-${version} echo "Fetching .sha256 file" >&2 -sha256out=$(curl -s http://${FTPDIR}/${name}.sha256sum) +sha256out=$(curl -s -f http://${FTPDIR}/${name}.sha256sum) + +if [ "$?" -ne "0" ]; then + echo "Version not found" >&2 + exit 1 +fi extensions=( "xz" "bz2" "gz" ) echo "Choosing archive extension (known are ${extensions[@]})..." >&2 -- cgit 1.4.1