#!/bin/sh # # distfiles-clean # # Cleans unused files from Portage's distfiles directory. # # José Fonseca PROGRAM=`basename "$0"` while [ ${#} -gt 0 ] do case "$1" in -h|--help) USAGE=y break ;; -i|--ignore) IGNORE="$IGNORE $2" shift 2 ;; -I|--ignore-file) IGNORE="$IGNORE `cat "$2"`" shift 2 ;; -p|--pretend) PRETEND=y shift ;; *) echo "$PROGRAM: Invalid option \'$1\'" 1>&2 USAGE=y break ;; esac done # For PORTDIR and DISTDIR . /etc/make.globals . /etc/make.conf if [ "$USAGE" ] then echo "Usage: $PROGRAM [-h|--help] [-i|--ignore ] [-I|--ignore-file ] [-p|--pretend]" echo "Cleans unused files from $DISTDIR directory." exit fi DBDIR=/var/db/pkg CACHEDIR=/var/cache/edb/dep for DIR in "$PORTDIR" "$DISTDIR" "$DBDIR" "$CACHEDIR" do if [ ! -d "$DIR" ] then echo "$PROGRAM: \'$DIR\' not found." exit fi done TMPFILE=`mktemp /tmp/$PROGRAM.XXXXXX` cd "$DISTDIR" { echo "cvs-src" [ "$IGNORE" ] && ls -1d $IGNORE find "$DBDIR" -name '*.ebuild' | sed -n -e "s:^$DBDIR/\([^/]*\)/\([^/]*\)/\([^/]*\)\.ebuild$:$CACHEDIR/\1/\3:p" | xargs sed -s -e '4!d;/^$/d;s/[[:alnum:]]\+?\|(\|)//g;s/\<[^[:space:]]\+\/\ "$TMPFILE" && ls -1 | comm -23 - "$TMPFILE" | { if [ "$PRETEND" ] then cat else xargs rm -f fi } rm "$TMPFILE"