1 #!/bin/bash 2 3 if [ -z $1 ]; then 4 echo "usage: $0 <specfile1> [specfile2 ...]" 5 exit 1 6 fi 7 8 export http_proxy="webcache.uk.sun.com:8080" 9 export ftp_proxy=${http_proxy} 10 PULL_NEW_TARBALLS=1 11 12 while [ $# -ne 0 ] 13 do 14 specfile=$1 15 16 if [ -f $specfile ]; then 17 NAME=$(grep "^Name:" $specfile | sed -e "s/Name: *//" ) 18 NAME=$( echo $NAME ) # Gets rid of spaces and tabs that sed didn't. 19 CURRENT=$(grep "^Version:" $specfile | sed -e "s/Version:[\t ]*//") 20 CURRENT=$( echo $CURRENT ) 21 SOURCE=$(grep "^Source:" $specfile | sed -e "s/Source:[\t ]*//") 22 SOURCE=$( echo $SOURCE ) 23 # Replace '%{Name}' with $NAME. 24 SOURCE=$(echo $SOURCE | sed -e "s/\%{*[Nn]ame}*/${NAME}/g") 25 #SOURCE=$(echo $SOURCE | sed -e "s/\%{*[Vv]ersion}*/${CURRENT}/g") 26 SOURCEDIR=$(dirname $SOURCE) 27 # Substitute '%version' if present in directory. 28 SOURCEDIR=$(echo $SOURCEDIR | sed -e "s/\%{*[Vv]ersion}*/${CURRENT}/g") 29 30 proto=$(echo $SOURCEDIR | cut -d ":" -f 1) 31 if [ $proto != "http" -a $proto != "ftp" ]; then 32 echo "Not fetching latest version for $NAME - can't use \"$SOURCEDIR\"" 33 else 34 LATEST=$(wget $SOURCEDIR -O - 2>/dev/null | grep "LATEST-IS" | sed -e "s/.*LATEST-IS-\([0-9][0-9\.]*\).*/\1/") 35 if [ -z $LATEST ]; then 36 echo "Cannot get latest version of $NAME from \"$SOURCEDIR/LATEST-IS*\"" 37 else 38 if [ $LATEST = $CURRENT ]; then 39 echo "Okay with $NAME-$LATEST" 40 else if [ -z $PULL_NEW_TARBALLS ]; then 41 echo "Need to update to $NAME-$LATEST from $CURRENT" 42 else 43 # TODO: It may not be bz2! 44 # TODO: Use original $SOURCE with %{Version} replaced. 45 SOURCE=$(echo $SOURCE | sed -e "s/\%{*[Vv]ersion}*/${LATEST}/g") 46 wget -nv --no-clobber $SOURCE 47 if [ $? -eq 0 ]; then 48 echo "Update $specfile to $LATEST" 49 fi 50 fi 51 fi 52 fi 53 fi 54 else 55 echo "WARNING: $specfile does not exist." 56 fi 57 58 shift 59 done 60 61