#!/bin/sh -eu

arches="x86_64 i586"
move_cmd=cp
destdir=./rebuild
#addon_format='%{NAME}'
addon_flavour=hasher
[ -e .repofork-config ] && . .repofork-config

PROG=`basename $0`
show_help()
{
	cat <<EOF
$PROG - create repofork add-on repo from autorepo TASK.GOOD build results

Usage: $PROG [options] addrepo1 ... addrepoN

Options:
  --addon-component-name=<name>  addon repository component name (default is $addon_flavour)
  --arch="i586 x86_64"           binary architectures to add
  --destdir=/path                where to create the add-on repository (default is $destdir)
  --cp                           copy files (default)
  --mv                           move files
  --ln                           hard link files
  -h, --help                     show this text and exit.

Report bugs to http://bugs.altlinux.ru/

EOF
}

show_usage()
{
	show_help
	exit
}

parse_common_option()
{
	echo "ERROR: unsupported option $1"
	show_usage
}

TEMP=`getopt -n $PROG -o h -l addon-component-name:,arch:,cp,destdir:,help,ln,mv -- "$@"` ||
	show_usage
eval set -- "$TEMP"

while :; do
	case "$1" in
		--arch) shift; arches="$1"; 
			;;
		--destdir) shift; destdir="$1"; 
			;;
		--addon-component-name) shift; $addon_flavour="$1"; 
			;;
		--cp) move_cmd="cp";
			;;
		--ln) move_cmd="ln";
			;;
		--mv) move_cmd="mv";
			;;
		--help|-h) show_help; exit;
			;;
		--) shift; break
			;;
		*) parse_common_option "$1"
			;;
	esac
	shift
done

taskgood=$1
if ! [ -d $taskgood ]; then
    echo "first arg should be a path to TASK.GOOD"
    exit 1
fi

shopt -s nullglob

for sdir in $taskgood/*; do
	addon_name=`basename $sdir`
	mkdir -p $destdir/$addon_name/SRPMS.$addon_flavour
	$move_cmd -t $destdir/$addon_name/SRPMS.$addon_flavour $sdir/SRPMS.hasher/*.src.rpm
	for rarch in noarch $arches; do
	    mkdir -p $destdir/$addon_name/$rarch/RPMS.$addon_flavour
	done
	for rarch in $arches; do
	    $move_cmd -t $destdir/$addon_name/noarch/RPMS.$addon_flavour $sdir/$rarch/RPMS.hasher/*.noarch.rpm 2>/dev/null ||:
	done
	for rarch in $arches noarch; do
	    if [ -d $sdir/$rarch ]; then
		$move_cmd -t $destdir/$addon_name/$rarch/RPMS.$addon_flavour $sdir/$rarch/RPMS.hasher/*.$rarch.rpm 2>/dev/null ||:
	    fi
	done
	# drop empty
	for rarch in noarch $arches; do
	    rmdir -p $destdir/$addon_name/$rarch/RPMS.$addon_flavour 2>/dev/null ||:
	done
done
