blob: d4f6b460924ed8e1247a0ec2095368ce72952930 [file] [log] [blame]
#!/bin/bash
# Simple script to count number of mirrors available for a particular URL
# Copyright (c) 2009 IBM
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
# David Williams - initial API and implementation
function usage() {
printf "\n\tSimple script to count number of mirrors available for a particular URL" >&2
printf "\n\tUsage: %s [-h] | [-v] [-f] [-p] [-t number] urls" $(basename $0) >&2
printf "\n\t\t%s" "where h==help, v==verbose, f==only ftp mirrors, p==only http mirrors, t==test against 'number' " >&2
printf "\n\t\t%s" "and urls is space delimited list of URL parameters," >&2
printf "\n\t\t%s\n" "such as /ganymede/releases/site.xml" >&2
}
function checkMirrorsForURL() {
if [ -z $1 ]
then
echo "Error: internal funtion requires mirror url parameter";
exit 3;
else
mirrorURL=$1
fi
if [ -z $2 ]
then
protocol=
pword="http and ftp"
else
protocolarg="&protocol=$2"
pword="$2"
fi
nMirrors=$(wget -q -O - "http://www.eclipse.org/downloads/download.php?file=${mirrorURL}&format=xml${protocolarg}" | grep \<mirror\ | wc -l)
echo " number of" ${pword} "mirrors: " ${nMirrors} " for" ${mirrorURL}
exit $nMirrors
}
function minvalue() {
ref=$1
comp=$2
result=
#echo "ref: $ref \r";
#echo "comp: " $comp "\r"
if [ -z $ref ]
then
#echo "no ref\r"
result=$comp
else
if [ $ref -lt $comp ]
then
#echo "ref lt comp\r"
result=$ref
else
#echo "comp <= ref\r"
result=$comp
fi
fi
echo $result
}
urls=
ftponly=0
httponly=0
protocol=
while getopts 'hvfpt:' OPTION
do
case $OPTION in
h) usage
exit 1
;;
f) ftponly=1
;;
p) httponly=1
;;
v) verbose=1
;;
t) testNumber=$OPTARG
;;
?) usage
exit 2
;;
esac
done
shift $(($OPTIND - 1))
urls="$@"
if [ $ftponly == 1 ]
then
protocol="ftp"
fi
if [ $httponly == 1 ]
then
protocol="http"
fi
if [ $ftponly == 1 -a $httponly == 1 ]
then
protocol=
fi
if [ $verbose ]
then
echo "ftponly: " $ftponly " httponly: " $httponly
echo "protocol: " $protocol
echo "urls: " $urls
fi
minimumMirrors=
if [ "${urls}" ]
then
echo
for mirrorURL in ${urls}
do
nm=checkMirrorsForURL $mirrorURL $protocol
minimumMirrors=min $minimumMirrors $nm
done
echo
else
usage
fi
if [ -z $testNumber ]
then
if [ $verbose ]
then
echo "no test mode"
fi
exit 0
else
result=$($testNumber - $minimumMirrors)
if [ $result <= 0 ]
then
if [ $verbose ]
then
echo "minimum mirrors was greater than or equal to criteria"
fi
exit 0
else
if [ $verbose ]
then
echo "minimum mirrors was not as large as criteria"
fi
exit result
fi
fi