#!/bin/bash
if [ -z "$2" ]; then
echo "must pass at least two options: download link and destination"
exit;
fi
dofetch() {
COMMAND=${1//'${URI}'/$2}
COMMAND=${COMMAND//'${DISTDIR}'/$3}
$COMMAND
}
PATCHMIRROR=$3
FILETOGET=`basename $1`
PACKAGE_FETCHCOMMAND=${PACKAGE_FETCHCOMMAND:-'/usr/bin/wget -t 5 --passive-ftp ${URI} -P ${DISTDIR}'}
PATCH_FETCHCOMMAND=${PATCH_FETCHCOMMAND:-$PACKAGE_FETCHCOMMAND}
PATCH_RESUMECOMMAND=${PATCH_RESUMECOMMAND:-$RESUMECOMMAND}
PACKAGE_PATH=${PACKAGE_PATH:-$2}
PORTDIR=${PORTDIR:-/usr/portage}
DTULISTDIR=${DTULISTDIR:-$PORTDIR/profiles}
GENTOO_MIRROR=${1%/distfiles*}
GENTOO_PATCH_MIRRORS=${GENTOO_PATCH_MIRRORS:-$GENTOO_MIRRORS}
export PACKAGE_FETCHCOMMAND PATCH_FETCHCOMMAND PATCH_RESUMECOMMAND PACKAGE_PATH
for i in $PACKAGE_PATH; do
if [ -f $i/$FILETOGET ]; then
echo "found file in $i - copying to $2"
cp $i/$FILETOGET $2/$FILETOGET
exit;
fi
done
for FIRST_GENTOO_MIRROR in $GENTOO_MIRRORS; do break; done
if [ $GENTOO_MIRROR == $FIRST_GENTOO_MIRROR ]; then
if [ -f $PORTDIR/profiles/dtu.list ]; then
for mirror in $GENTOO_PATCH_MIRRORS; do
cat $PORTDIR/profiles/dtu.list | fetchpatch $mirror/patchfiles/$FILETOGET $2
if [ $? -eq 0 ]; then exit; fi
done
fi
if [ ! -z $PATCHMIRROR ]; then
if [ ! $DTULISTDIR == "$PORTDIR/profiles" ] &&
[ ! "`find $DTULISTDIR/dtu.list.aux -mtime 0`" == "$DTULISTDIR/dtu.list.aux" ]; then
rm $DTULISTDIR/dtu.list.aux
fi
if [ ! -f "$DTULISTDIR/dtu.list.aux" ]; then
dofetch "$PATCH_FETCHCOMMAND" $PATCHMIRROR/dtu.list.aux $DTULISTDIR
fi
fetchpatch $PATCHMIRROR/$FILETOGET $2 < $DTULISTDIR/dtu.list.aux
if [ $? -eq 0 ]; then
exit;
else
echo "Trying full download"
fi
fi
fi
dofetch "$PACKAGE_FETCHCOMMAND" $1 $2
syntax highlighted by Code2HTML, v. 0.9.1