#!/bin/sh

TMPF=`mktemp -t fetch.XXXXXXXXXX`
TMPD=`mktemp -t fetch.XXXXXXXXXX`
DIST="/usr/portage/distfiles/"
OUTNAME=""
URLNAME=""
PORT=""
PW=`pwd`
TMPU=$PW/"digest-all.out"

help () {
  cat <<ENDS
$0 -- create file list 4 download new portage
Usage: $0 [-o output_file] "name portage"
default output file == "name portage"
Copyleft GNU GPL Bootmaker softWARe 1999-2004
ENDS

}

if [ -z "$1" ]; then
  help
  exit
fi
if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
  help
  exit
fi
if [ "$1" == "-o" ]; then
  shift; OUTNAME=$1
  shift; PORT=$1
else
  PORT="$1"
  OUTNAME="$1"
fi
if [ -z "$PORT" ]; then
  help
  exit
fi
URLNAME=$OUTNAME".url"
>$URLNAME

if [ ! -e $TMPU ]; then
  find /usr/portage -type f -name digest-* -exec cat '{}' >> $TMPD ';'
  uniq $TMPD $TMPU
  cat $TMPU | perl -ne 's/MD5\s+([0-9A-Fa-f]+)\s+(\S+)\s+\d+/print "$1 *$2\n";/eg' >> digest.tmp
fi

emerge -ufp "$PORT" 2>$TMPF 1>/dev/null
LIST=`cat $TMPF | perl -ne 's/ /\n/g; print $_;'`
ULIST=`cat $TMPF | perl -ne 's/\/([\w\-\+\.\~]+)\s+/print "$1\n";/eg;' | uniq`


echo "#!/bin/sh
get_and_check () {
  for i in \$LIST; do
  wget -o \$NAME.log -nd \$i
  SUM=\`md5sum \$NAME\`
    if ! grep \$SUM $TMPU 1>/dev/null 2>/dev/null; then
      rm -f \$i
    else
      echo md5sum 4 \$NAME is OK
      break
    fi
  done
}" >$OUTNAME

cd $DIST
for i in $ULIST; do
  if [ -e $i ]; then
    SUM=`md5sum $i`
    if ! grep $SUM $TMPU 1>/dev/null 2>/dev/null; then
      rm -f $i
    fi
  fi
  if [ ! -e $i ]; then
    TLIST=`echo $LIST | sed -e 's/ /\n/g' | grep $i`
#    echo "LIST=\"`echo $LIST| sed -e 's/ /\n/g'| grep $i`\"" >> $PW/$OUTNAME
    echo "LIST=\"$TLIST\"" >> $PW/$OUTNAME
    echo "$TLIST" >> $PW/$URLNAME
    echo "NAME=\"$i\"" >> $PW/$OUTNAME
    echo get_and_check >> $PW/$OUTNAME
  fi
done
cd $PW
rm -f $TMPF
rm -f $TMPD
exit

