#!/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