#!/bin/sh
#
# this script is for cleanup old packages and sources
#
# usage:
#    apkg-clean | xargs rm
#

[ -f /etc/apkg.conf ] && . /etc/apkg.conf

scan_pkgs() {
	[ "$APKG_PACKAGE_DIR" ] && allpkg=$(echo $APKG_PACKAGE_DIR/*.spm 2>/dev/null)
	for i in $(apkg -s); do
		. $(apkg -p $i)/abuild 2>/dev/null
		if [ ! "$APKG_PACKAGE_DIR" ]; then
			for p in $(apkg -p $i)/*.spm; do
				[ -f $p ] || continue
				[ "${p##*/}" = "$name#$version-$release.spm" ] && continue
				echo $p
			done
		else
			allpkg=$(echo $allpkg | sed "s|$APKG_PACKAGE_DIR/$name#$version-$release.spm||")
		fi
	done
	[ "$APKG_PACKAGE_DIR" ] && echo $allpkg | tr ' ' '\n'
}

scan_srcs() {
	[ "$APKG_SOURCE_DIR" ]  && allsrc=$(echo $APKG_SOURCE_DIR/* 2>/dev/null)
	for i in $(apkg -s); do
		. $(apkg -p $i)/abuild 2>/dev/null
		unset keep
		for s in $source; do
			s=${s%::noextract}
			case $s in
				*::*) keep="$keep ${s%::*}";;
				 */*) keep="$keep ${s##*/}";;
				   *) [ "$APKG_SOURCE_DIR" ] || keep="$keep $s";;
			esac
		done
		if [ ! "$APKG_SOURCE_DIR" ]; then
			(cd $(apkg -p $i)
			for f in *; do
				case $f in
					abuild|depends|preinstall|postinstall|*.spm) continue;;
				esac
				echo $keep | tr ' ' '\n' | grep -qx $f || echo $PWD/$f
			done
			)
		else
			for f in $keep; do
				allsrc=$(echo $allsrc | sed "s|$APKG_SOURCE_DIR/$f||")
			done
		fi
	done
	[ "$APKG_SOURCE_DIR" ]  && echo $allsrc | tr ' ' '\n'
}

print_help() {
	cat <<EOF	
usage:
	$0 [-p] [-s] | xargs rm -v
	
options:
	-s  print sources only
	-p  print packages only
	
EOF
} 

if [ "$1" ]; then
	while [ "$1" ]; do
		case $1 in
			-p) scan_pkgs;;
			-s) scan_srcs;;
			-h) print_help;;
		esac
		shift
	done
else
	scan_pkgs
	scan_srcs
fi

exit 0
