#!/bin/bash

# cleandistfiles - remove old distfiles from gentoo
#
# Karsten Kruse - 2004 - www.tecneeq.de

raw_files="/tmp/packages_raw.txt"
dup_files="packages_dup.txt"
ack_files="packages_ok.txt"
source_dir="/usr/portage/distfiles"
backup_dir="/usr/portage/distfiles_backup"

echo "create package list"
emerge -ef world  > $raw_files

echo "remove unneeded text and duplicate files from list"
cat $raw_files | \
while read filename ; do
  case "$filename" in
    ">>> md5 src_uri"*) echo ${filename##*' '} >> $dup_files ;;
  esac
done
sort -u $dup_files > $ack_files

echo "move distfiles to backup file"
mkdir -p $backup_dir
mv  -f $source_dir/* $backup_dir

echo "move good distfiles back to source directory"
cat $ack_files | \
while read filename ; do
  mv "$backup_dir/$filename" $source_dir/
done

echo "remove backup directory, old distfiles and tempfiles"
rm -rf $backup_dir
rm -f $raw_files $dup_files $ack_files

echo "done"

# eof
