#!/bin/bash
function PrimaryXml {
wget -q -O - "$1/repodata/repomd.xml" \
| grep primary.xml \
| sed -n -e 's/.*"\(.*\)".*/\1/p'
}
function GetPackages {
BaseUrl="$1"
# Packages end with - and start with /
Include=`echo $2 | sed 's/ /-|\//g'`
Exclude=`echo $3 | sed 's/ /-|\//g'`
wget -q -O - "$BaseUrl`PrimaryXml $BaseUrl`" \
| zcat \
| sed -n -e 's/.*href="\([^"]*\)\".*/\1/p' \
| grep -E "rpm$" \
| ( [ -z "$Include" ] && cat || grep -E "($Include)" ) \
| ( [ -z "$Exclude" ] && cat || grep -vE "($Exclude)" ) \
}
function DownloadPackages {
BaseUrl="$1"
Mode=0
Include=""
Exclude=""
shift
while (($#)); do
if [[ "$1" == "-v" ]] ; then
Mode=1
else
if [ $Mode -eq 1 ] ; then
Exclude="$Exclude $1"
else
Include="$Include $1"
fi
fi
shift
done
Packages=0
GetPackages "$BaseUrl" "$Include" "$Exclude" | {
while read i ; do
if [ ! -f `basename $i` ] ; then
test -d `dirname $i` || mkdir -p `dirname $i`
echo "Downloading $BaseUrl$i..."
wget -q -O "`basename $i`" "$BaseUrl$i"
fi
Packages=$((Packages+1))
done
echo "Download complete: $Packages from $BaseUrl"
}
}