#!/bin/sh
#
# $Idaemons: /home/cvs/pkgtools/portsclean,v 1.5 2001/08/02 08:05:10 knu Exp $

perm=770
grp=wheel

PORTSDIR=$(cd ${PORTSDIR:-/usr/ports} && make -V .CURDIR)

if [ -z $PORTSDIR ]; then
    echo "PORTSDIR is not defined for some reason."
    exit 1
fi

if [ ! -d $PORTSDIR -o ! -f $PORTSDIR/Mk/bsd.port.mk ]; then
    echo "PORTSDIR ($PORTSDIR) does not seem to be a ports directory."
    exit 1
fi

WRKDIRPREFIX=$(cd $PORTSDIR && make -V WRKDIRPREFIX | sed 's,//*,/,g;s,/$,,')

if [ -z $WRKDIRPREFIX ]; then
    echo -n "Cleaning $PORTSDIR/*/*/work... "

    # Ruby's glob yields the given block everytime a new matching
    # entry is found, so it doesn't overflow, and we don't have to
    # wait until everything is found.

    cd $PORTSDIR && ruby -e 'Dir.glob("*/*/work") {|d| system("rm", "-rf", d)}'

    echo "done."
    exit 0
fi

WRKDIR=$WRKDIRPREFIX$PORTSDIR

echo -n "Cleaning $WRKDIR... "

if [ -d $WRKDIR ]; then
    rm -rf $WRKDIR
fi

# Dig group writable directories in advance so all wheel users can
# build ports without the root privilege.

if [ ! -d $WRKDIR ]; then
    mkdir -p $WRKDIR || exit 1
fi
chgrp $grp $WRKDIR >/dev/null 2>&1
chmod $perm $WRKDIR >/dev/null 2>&1

for d in $(cd $PORTSDIR && make -V SUBDIR); do
    mkdir $WRKDIR/$d
    chgrp $grp $WRKDIR/$d >/dev/null 2>&1
    chmod $perm $WRKDIR/$d >/dev/null 2>&1
done

echo "done."
