#!/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

shopt -s nullglob

for sfile in "$@"; do
    addon_name=`rpmquery --queryformat "$addon_format" -p $sfile`
    srpm=`basename $sfile`
    mkdir -p $destdir/$addon_name/SRPMS.$addon_flavour
    $move_cmd -t $destdir/$addon_name/SRPMS.$addon_flavour $sfile
    for rarch in noarch $arches; do
	mkdir -p $destdir/$addon_name/$rarch/RPMS.$addon_flavour
    done
    hbase=`dirname $sfile`
    hbase=`dirname $hbase`
    for rarch in noarch $arches; do
	for rfile in $hbase/$rarch/RPMS.*/*.noarch.rpm; do
	    rsrpm=`rpmquery --queryformat '%{SOURCERPM}' -p $rfile`
	    [ $srpm = $rsrpm ] && $move_cmd -t $destdir/$addon_name/noarch/RPMS.$addon_flavour $rfile
	done
    done
    for rarch in $arches; do
	for rfile in $hbase/$rarch/RPMS.*/*.$rarch.rpm; do
	    rsrpm=`rpmquery --queryformat '%{SOURCERPM}' -p $rfile`
	    [ $srpm = $rsrpm ] && $move_cmd -t $destdir/$addon_name/$rarch/RPMS.$addon_flavour $rfile
	done
    done
    for rarch in noarch $arches; do
	# drop empty
	rmdir -p $destdir/$addon_name/$rarch/RPMS.$addon_flavour 2>/dev/null ||:
    done
done
