#!/bin/bash
#
# __copy1__
# __copy2__
#
CMD=$(basename $0)
CMDVER="1.1"
CMDSTR="$CMD v$CMDVER (2023-03-14)"

set -e -u

usage()
{
	echo "
== $CMDSTR == remove old version files from \$PRJ/pkgs dir ==

usage: $CMD [-x] [distro(s)]

options:
  --all|ALL	processes all distros
  -x		execute (default: dry-run)

distros:
  . default distro is the installed one ($DISTRIB_CODENAME)
  . --all overrides the provided list (or default)
" >&2
	exit 1
}


cleanup()
{
	rm -f $tmp
}


# (MAIN)

eval $(ku-distroenv)

f_exec=false
f_all=false
distros=

while [ $# != 0 ]
do
  case $1 in
    -x)		f_exec=true ;;
    -a|--all)	f_all=true ;;
    ALL)	f_all=true ;;
    -*|"")	usage ;;
    *)		distros="$distros $1" ;;
  esac
  shift
done

[ -d $PRJ/pkgs ] || {
	echo "directory $PRJ/pkgs not found, abort" >&2
	exit 1
}
cd $PRJ/pkgs


$f_all && {
	[ "$distros" != "" ] && usage
	distros=$(ls)
}

[ "$distros" == "" ] && distros=$DISTRIB_CODENAME

tmp=$(mktemp /tmp/$CMD-XXXXXXXXX)

trap "echo '*INTR*'; cleanup; exit 255" 1 2 3

cd $PRJ/pkgs || {
	cleanup
	exit $?
}

action="purge"
$f_exec || action="(dummy) purge"

for distro in $distros
do
	cd $distro
	echo "  purging \$PRJ/pkgs/$distro dir ..."

	:>$tmp

	for file in $(ls -t *.deb 2>/dev/null)
	do
		eval $(jtdeb-version $file)
		echo $pkg_name >>$tmp
		grep -q "^$pkg_name $pkg_arch$" $tmp && {
			files="pkgs/$distro/$file\n$( (cd $PRJ; find target/dists/$distro -name $file) )"
			set $(echo -en "$files" | wc -l)
			echo "   $action $file -- $1 file(s)"
			files=$(echo -e $files)
			$f_exec && {
				(cd $PRJ ; rm -f $files)
			}
			continue
		}
		echo "$pkg_name $pkg_arch" >>$tmp
	done
	cd ..
done

cleanup
exit 0
