1#!/bin/sh
2
3readonly PSVN=${PSVN:-svn}
4
5echo "===> Removing work dirs..."
6
7if [ "$(make -V PORTNAME)" ]; then
8	depth=2
9else
10	[ "$(make -V PORTSTOP)" ] && depth=4 || depth=3
11fi
12
13wrk_dirs=$(find . -name "work*" -type d -depth $((depth-1)) | sed 's|^./||g')
14if [ "$wrk_dirs" ]; then
15	for wdir in $wrk_dirs; do
16		if [ $depth -ne 2 ]; then
17			dirname=$(dirname "$wdir")
18			echo "===> Running 'make clean' in $dirname..."
19			make_args="-C $dirname"
20		else
21			echo "===> Running 'make clean'..."
22			make_args=""
23		fi
24
25		ret=$(make $make_args clean 2>/dev/null)
26		if echo "$ret" | grep -q 'not writable'; then
27			if [ $depth -ne 2 ]; then
28				echo "  Failed to 'make clean' in $dirname"
29			else
30				echo "  Failed to 'make clean'"
31			fi
32		fi
33	done
34fi
35
36if ! which "$PSVN" >/dev/null; then
37	echo "===> $PSVN executable not found" >&2
38	exit 1
39fi
40if $PSVN info >/dev/null 2>&1; then
41	echo "===> Running '$PSVN revert'..."
42	$PSVN revert --depth infinity .
43
44	echo "===> Removing leftover files..."
45	$PSVN status --no-ignore | while read line; do
46		status=$(echo "$line" | awk '{ print $1 }')
47		file=$(echo "$line" | awk ' { print $2 }')
48
49		[ ! "$status" -o ! "$file" ] && continue
50
51		if [ "$status" = "?" -o "$status" = "I" ]; then
52			[ "$file" != "distfiles" ] || continue
53			echo "  $file"
54			rm -rf "$file"
55		else
56			echo "file=$file status=$status"
57		fi
58	done
59fi
60