#!/bin/bash

cd /home/rpmbuild/site/rpms

function getOneMock() {
case $1 in
*i)	dep=${1%i}
	;;
*x)	dep=${1%x}
	;;
*)	dep=$1
	;;
esac
case $dep in 
scl71el*)	dep=${dep#scl71el}
	type=enterprise
	;;
scl70el*)	dep=${dep#scl70el}
	type=enterprise
	;;
scl56el*)	dep=${dep#scl56el}
	type=enterprise
	;;
scl55el*)	dep=${dep#scl55el}
	type=enterprise
	;;
scl54el*)	dep=${dep#scl54el}
	type=enterprise
	;;
el*)	dep=${dep#el}
	type=enterprise
	;;
fc*)	dep=${dep#fc}
	type=fedora
	;;
scl71fc*)	dep=${dep#scl71fc}
	type=fedora
	;;
scl70fc*)	dep=${dep#scl70fc}
	type=fedora
	;;
scl56fc*)	dep=${dep#scl56fc}
	type=fedora
	;;
scl55fc*)	dep=${dep#scl55fc}
	type=fedora
	;;
scl54fc*)	dep=${dep#scl54fc}
	type=fedora
	;;
*)	echo Connais pas $dep
	;;
esac


if [ -d $type/$dep/${2-remi}/x86_64 ]
then
	cible=$type/$dep/${2-remi}/
	debug=$type/$dep/debug-${2-remi}/
else 
	echo "$1 n'est pas un dépôt ($type/$dep/${2-remi})"
	exit 2
fi

if   [ -d /var/lib/mock/${1}/repodata ]; then
	src=/var/lib/mock/${1}

elif   [ -d /var/lib/mock/${1}i/result ]; then
	src=/var/lib/mock/${1}i/result

elif [ -d /var/lib/mock/$1/result ]; then
	src=/var/lib/mock/$1/result
else
	echo "$1 n'est pas un dossier mock"
	exit 2
fi

echo Copie de $src vers $cible
for i in $src/*.rpm
do
	j=$(basename $i)
	case $j in 
		*.src.rpm)	echo " " $i ignored
			;;
		xulrunner-last-debuginfo*)	echo " " $i ignored
			;;
		mozilla-crashreporter*)		echo " " $i ignored
			;;
		firefox-debuginfo*)		echo " " $i ignored
			;;
		thunderbird-debuginfo*)	echo " " $i ignored
			;;
		*debuginfo*x86_64.rpm)
			if [ -f ${debug}x86_64/$j ]; then
				echo " " $i already there
			elif [ -d ${debug}x86_64 ]; then
				cp $i ${debug}x86_64 && echo + $i copied debuginfo x86_64
			else
				echo " " $i ignored
			fi
			;;
		*debuginfo*86.rpm)
			if [ -f ${debug}i386/$j ]; then
				echo " " $i already there
			elif [ -d ${debug}i386 ]; then
				cp $i ${debug}i386 && echo + $i copied debuginfo i386
			else
				echo " " $i ignored
			fi
			;;
		*.noarch.rpm)	
			if [ -f ${cible}x86_64/$j ]; then
				echo " " $i already there
			else
				cp $i ${cible}x86_64 && echo + $i copied x86_64
				[ -d ${cible}ppc    -a ! -f ${cible}ppc/.closed ]  \
					&& ln ${cible}x86_64/$j ${cible}ppc/$j \
					&& echo + $i linked ppc
				[ -d ${cible}ppc64  -a ! -f ${cible}ppc64/.closed ] \
					&& ln ${cible}					/$j ${cible}ppc64/$j  \
					&& echo + $i linked ppc64
				[ -d ${cible}i386 ] \
					&& ln ${cible}x86_64/$j ${cible}i386/$j \
					&& echo + $i linked x86_64
			fi
			;;
		*.i?86.rpm)	
			if [ -f ${cible}i386/$j ]; then
				echo " " $i already there
			else
				cp $i ${cible}i386 && echo + $i copied i686
			fi
			;;
		*.x86_64.rpm)	
			if [ -f ${cible}x86_64/$j ]; then
				echo " " $i already there
			else
				cp $i ${cible}x86_64 && echo + $i copied x86_64
			fi
			;;
		*)		echo Aucun RPM disponible
			;;
	esac
done
}

if [ $# = 0 ]; then
	echo usage $0 nomdépôt  [ prefix ]
	exit 1
fi

opt=remi
if [ $1 = test ]; then
	opt=test
	shift
fi
if [ $1 = test70 ]; then
	opt=test70
	shift
fi
if [ $1 = test71 ]; then
	opt=test71
	shift
fi
if [ $1 = php55 ]; then
	opt=php55
	shift
fi
if [ $1 = php56 ]; then
	opt=php56
	shift
fi
if [ $1 = php70 ]; then
	opt=php70
	shift
fi
if [ $1 = php71 ]; then
	opt=php71
	shift
fi
if [ $1 = devs -o $1 = dev ]; then
	opt=devs
	shift
fi

if [ $1 = all ]; then
	for i in 22 23 24 25
	do
		getOneMock fc${i}i $opt
	done
	for i in 5 6
	do
		getOneMock el${i}i $opt
	done
elif [ $1 = all55 ]; then
	for n in 5 6
	do
		getOneMock el${n}i php55
		getOneMock el${n}x php55
	done
	n=7
		getOneMock el${n}x php55

elif [ $1 = all56 ]; then
	for n in 5 6
	do
		getOneMock el${n}i php56
		getOneMock el${n}x php56
	done
	n=7
		getOneMock el${n}x php56

elif [ $1 = all70 ]; then
	[ $opt = remi ] && opt=php70
	[ $opt = test ] && opt=test70
	for n in 22 23 24
	do
		getOneMock fc${n}i $opt
		getOneMock fc${n}x $opt
	done
	n=6
		getOneMock el${n}i $opt
		getOneMock el${n}x $opt
	n=7
		getOneMock el${n}x $opt

elif [ $1 = all71 ]; then
	[ $opt = remi ] && opt=php71
	[ $opt = test ] && opt=test71
	for n in 23 24 25
	do
		getOneMock fc${n}i $opt
		getOneMock fc${n}x $opt
	done
	n=6
		getOneMock el${n}i $opt
		getOneMock el${n}x $opt
	n=7
		getOneMock el${n}x $opt

elif [ $1 = all54 ]; then
	for n in 5 6
	do
		getOneMock el${n}i remi
		getOneMock el${n}x remi
	done
	n=7
		getOneMock el${n}x remi

elif [ $1 = for56 ]; then
	for i in 22 23 24
	do
		getOneMock fc${i}x remi
	done
	for i in 5 6 7
	do
		getOneMock el${i}x test
	done

elif [ $1 = for55 ]; then
	for i in 22 23 24
	do
		getOneMock fc${i}x remi
	done
	for i in 5 6 7
	do
		getOneMock el${i}x test
	done

elif [ $1 = allx ]; then
	for i in 22 23 24 25
	do
		getOneMock fc${i}x $opt
	done
	for i in 5 6 7
	do
		getOneMock el${i}x $opt
	done

elif [ $1 = scl54 ]; then
	for i in 22 23 24 25
	do
		getOneMock scl54fc${i}x $opt
	done
	for i in 6 7
	do
		getOneMock scl54el${i}x $opt
	done

elif [ $1 = scl55 ]; then
	for i in 22 23 24 25
	do
		getOneMock scl55fc${i}x $opt
	done
	for i in 6 7
	do
		getOneMock scl55el${i}x $opt
	done

elif [ $1 = scl56 ]; then
	for i in 22 23 24 25
	do
		getOneMock scl56fc${i}x $opt
	done
	for i in 6 7
	do
		getOneMock scl56el${i}x $opt
	done

elif [ $1 = scl70 ]; then
	for i in 22 23 24 25
	do
		getOneMock scl70fc${i}x $opt
	done
	for i in 6 7
	do
		getOneMock scl70el${i}x $opt
	done

elif [ $1 = scl71 ]; then
	for i in 22 23 24 25
	do
		getOneMock scl71fc${i}x $opt
	done
	for i in 6 7
	do
		getOneMock scl71el${i}x $opt
	done

else
	for i in $*
	do
		getOneMock $i $opt
	done
fi