#!/bin/bash

cd /home/rpmbuild/site/rpms

function getOneMock() {
case $1 in
*i)	dep=${1%i}
	;;
*x)	dep=${1%x}
	;;
*a)	dep=${1%a}
	;;
*)	dep=$1
	;;
esac

rep=${2-remi}

case $dep in 
scl84el*)	dep=${dep#scl84el}
	type=enterprise
	;;
scl83el*)	dep=${dep#scl83el}
	type=enterprise
	;;
scl82el*)	dep=${dep#scl82el}
	type=enterprise
	;;
scl81el*)	dep=${dep#scl81el}
	type=enterprise
	;;
scl80el*)	dep=${dep#scl80el}
	type=enterprise
	;;
scl74el*)	dep=${dep#scl74el}
	type=enterprise
	;;
scl73el*)	dep=${dep#scl73el}
	type=enterprise
	;;
scl72el*)	dep=${dep#scl72el}
	type=enterprise
	;;
scl71el*)	dep=${dep#scl71el}
	type=enterprise
	;;
scl70el*)	dep=${dep#scl70el}
	type=enterprise
	;;
scl56el*)	dep=${dep#scl56el}
	type=enterprise
	;;
el??72)
	dep=${1:2:1}
    if [ "$2" == "php72" -o "$2" == "test72" ]
    then	rep=$rep
	elif [ "$2" == "remi" ]
	then	rep=php72
	else	rep=${2}72
	fi
	type=enterprise
	;;
el??73)
	dep=${1:2:1}
    if [ "$2" == "php73" -o "$2" == "test73" ]
    then	rep=$rep
	elif [ "$2" == "remi" ]
	then	rep=php73
	else	rep=${2}73
	fi
	type=enterprise
	;;
el??74)
	dep=${1:2:1}
    if [ "$2" == "php74" -o "$2" == "test74" ]
    then	rep=$rep
	elif [ "$2" == "remi" ]
	then	rep=php74
	else	rep=${2}74
	fi
	type=enterprise
	;;
el???74)
	dep=${1:2:2}
    if [ "$2" == "php74" -o "$2" == "test74" ]
    then	rep=$rep
	elif [ "$2" == "remi" ]
	then	rep=php74
	else	rep=${2}74
	fi
	type=enterprise
	;;
el??80)
	dep=${1:2:1}
    if [ "$2" == "php80" -o "$2" == "test80" ]
    then	rep=$rep
	elif [ "$2" == "remi" ]
	then	rep=php80
	else	rep=${2}80
	fi
	type=enterprise
	;;
el???80)
	dep=${1:2:2}
    if [ "$2" == "php80" -o "$2" == "test80" ]
    then	rep=$rep
	elif [ "$2" == "remi" ]
	then	rep=php80
	else	rep=${2}80
	fi
	type=enterprise
	;;
el??81)
	dep=${1:2:1}
    if [ "$2" == "php81" -o "$2" == "test81" ]
    then	rep=$rep
	elif [ "$2" == "remi" ]
	then	rep=php81
	else	rep=${2}81
	fi
	type=enterprise
	;;
el???81)
	dep=${1:2:2}
    if [ "$2" == "php81" -o "$2" == "test81" ]
    then	rep=$rep
	elif [ "$2" == "remi" ]
	then	rep=php81
	else	rep=${2}81
	fi
	type=enterprise
	;;
el??82)
	dep=${1:2:1}
    if [ "$2" == "php82" -o "$2" == "test82" ]
    then	rep=$rep
	elif [ "$2" == "remi" ]
	then	rep=php82
	else	rep=${2}82
	fi
	type=enterprise
	;;
el???82)
	dep=${1:2:2}
    if [ "$2" == "php82" -o "$2" == "test82" ]
    then	rep=$rep
	elif [ "$2" == "remi" ]
	then	rep=php82
	else	rep=${2}82
	fi
	type=enterprise
	;;
el??83)
	dep=${1:2:1}
    if [ "$2" == "php83" -o "$2" == "test83" ]
    then	rep=$rep
	elif [ "$2" == "remi" ]
	then	rep=php83
	else	rep=${2}83
	fi
	type=enterprise
	;;
el???83)
	dep=${1:2:2}
    if [ "$2" == "php83" -o "$2" == "test83" ]
    then	rep=$rep
	elif [ "$2" == "remi" ]
	then	rep=php83
	else	rep=${2}83
	fi
	type=enterprise
	;;
el??84)
	dep=${1:2:1}
    if [ "$2" == "php84" -o "$2" == "test84" ]
    then	rep=$rep
	elif [ "$2" == "remi" ]
	then	rep=php84
	else	rep=${2}84
	fi
	type=enterprise
	;;
el???84)
	dep=${1:2:2}
    if [ "$2" == "php84" -o "$2" == "test84" ]
    then	rep=$rep
	elif [ "$2" == "remi" ]
	then	rep=php84
	else	rep=${2}84
	fi
	type=enterprise
	;;
fc???74)
	dep=${1:2:2}
    if [ "$2" == "php74" -o "$2" == "test74" ]
    then	rep=$rep
	elif [ "$2" == "remi" ]
	then	rep=php74
	else	rep=${2}74
	fi
	type=fedora
	;;
fc???80)
	dep=${1:2:2}
    if [ "$2" == "php80" -o "$2" == "test80" ]
    then	rep=$rep
	elif [ "$2" == "remi" ]
	then	rep=php80
	else	rep=${2}80
	fi
	type=fedora
	;;
fc???81)
	dep=${1:2:2}
    if [ "$2" == "php81" -o "$2" == "test81" ]
    then	rep=$rep
	elif [ "$2" == "remi" ]
	then	rep=php81
	else	rep=${2}81
	fi
	type=fedora
	;;
fc???82)
	dep=${1:2:2}
    if [ "$2" == "php82" -o "$2" == "test82" ]
    then	rep=$rep
	elif [ "$2" == "remi" ]
	then	rep=php82
	else	rep=${2}82
	fi
	type=fedora
	;;
fc???83)
	dep=${1:2:2}
    if [ "$2" == "php83" -o "$2" == "test83" ]
    then	rep=$rep
	elif [ "$2" == "remi" ]
	then	rep=php83
	else	rep=${2}83
	fi
	type=fedora
	;;
fc???84)
	dep=${1:2:2}
    if [ "$2" == "php84" -o "$2" == "test84" ]
    then	rep=$rep
	elif [ "$2" == "remi" ]
	then	rep=php84
	else	rep=${2}84
	fi
	type=fedora
	;;
el*)	dep=${dep#el}
	type=enterprise
	;;
fc*)	dep=${dep#fc}
	type=fedora
	;;
scl84fc*)	dep=${dep#scl84fc}
	type=fedora
	;;
scl83fc*)	dep=${dep#scl83fc}
	type=fedora
	;;
scl82fc*)	dep=${dep#scl82fc}
	type=fedora
	;;
scl81fc*)	dep=${dep#scl81fc}
	type=fedora
	;;
scl80fc*)	dep=${dep#scl80fc}
	type=fedora
	;;
scl74fc*)	dep=${dep#scl74fc}
	type=fedora
	;;
*)	echo Connais pas $dep
	;;
esac


if [ -d $type/$dep/$rep/x86_64 ]
then
	cible=$type/$dep/$rep/
	debug=$type/$dep/debug-$rep/
else 
	echo "$1 n'est pas un dépôt ($type/$dep/$rep)"
	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/${3-*}.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
			;;
		remi-crypto*el8*) echo " " $i ignored
			;;
		remi-crypto*el9*)
			if [ -f priv/el9.x86_64/$j ]; then
				echo " " $i already there
			else
				cp $i priv/el9.x86_64 && echo + $i copied priv EL9
			fi
			;;
		remi-crypto*el10*)
			if [ -f priv/el10.x86_64/$j ]; then
				echo " " $i already there
			else
				cp $i priv/el10.x86_64 && echo + $i copied priv EL10
			fi
			;;
		remi-crypto*fc41*)
			if [ -f priv/fc41.x86_64/$j ]; then
				echo " " $i already there
			else
				cp $i priv/fc41.x86_64 && echo + $i copied priv FC41
			fi
			;;
		remi-crypto*fc40*)
			if [ -f priv/fc40.x86_64/$j ]; then
				echo " " $i already there
			else
				cp $i priv/fc40.x86_64 && echo + $i copied priv FC40
			fi
			;;
		*-debuginfo-*aarch64.rpm|*-debugsource-*aarch64.rpm)
			if [ -f ${debug}aarch64/$j ]; then
				echo " " $i already there
			elif [ -d ${debug}aarch64 ]; then
				cp $i ${debug}aarch64 && echo + $i copied debuginfo aarch64
			else
				echo " " $i ignored
			fi
			;;
		*-debuginfo-*x86_64.rpm|*-debugsource-*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|*-debugsource-*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}armhfp ] \
					&& ln ${cible}x86_64/$j ${cible}armhfp/$j \
					&& echo + $i linked armhfp
				[ -d ${cible}aarch64 ] \
					&& ln ${cible}x86_64/$j ${cible}aarch64/$j \
					&& echo + $i linked aarch64
			fi
			;;
		*.i?86.rpm)	
			if [ -f ${cible}i386/$j ]; then
				echo " " $i already there
			else
				cp $i ${cible}i386 && echo + $i copied i686
			fi
			;;
		*.aarch64.rpm)	
			if [ -f ${cible}aarch64/$j ]; then
				echo " " $i already there
			else
				cp $i ${cible}aarch64 && echo + $i copied aarch64
			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

echo -e "\n\n\n---------------------------------------\n\n\n"

opt=remi
if [ $1 = remi ]; then
	shift
fi
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 = test72 ]; then
	opt=test72
	shift
fi
if [ $1 = test72 ]; then
	opt=test72
	shift
fi
if [[ $1 = php* ]]; then
	opt=$i
	shift
fi
if [[ $1 == glpi* ]]; then
	opt=$1
	shift
fi
if [[ $1 == redis* ]]; then
	opt=$1
	shift
fi
if [[ $1 == memcached ]]; then
	opt=$1
	shift
fi
if [[ $1 == composer* ]]; then
	opt=$1
	shift
fi
if [ $1 = devs -o $1 = dev ]; then
	opt=devs
	shift
fi

if [ $1 = all56 ]; then
	n=7
		getOneMock el${n}x56 php56 '*5.6*'

elif [ $1 = all70 ]; then
	[ $opt = remi ] && opt=php70
	[ $opt = test ] && opt=test70
	n=7
		getOneMock el${n}x70 $opt '*7.0*'

elif [ $1 = all71 ]; then
	[ $opt = remi ] && opt=php71
	[ $opt = test ] && opt=test71
	n=7
		getOneMock el${n}x71 $opt '*7.1*'

elif [ $1 = all72 ]; then
	[ $opt = remi ] && opt=php72
	[ $opt = test ] && opt=test72
		getOneMock el8x72  $opt '*7.2*'
		getOneMock el8a72  $opt '*7.2*'

elif [ $1 = all73 ]; then
	[ $opt = remi ] && opt=php73
	[ $opt = test ] && opt=test73
		getOneMock el8x73  $opt '*7.3*'
		getOneMock el8a73  $opt '*7.3*'

elif [ $1 = all74 ]; then
	[ $opt = remi ] && opt=php74
	[ $opt = test ] && opt=test74
		getOneMock fc39x74 $opt '*7.4*'
		getOneMock fc39a74 $opt '*7.4*'
		getOneMock fc40x74 $opt '*7.4*'
		getOneMock fc40a74 $opt '*7.4*'
		getOneMock fc41x74 $opt '*7.4*'
		getOneMock fc41a74 $opt '*7.4*'
		getOneMock el8x74  $opt '*7.4*'
		getOneMock el8a74  $opt '*7.4*'
		getOneMock el9x74  $opt '*7.4*'
		getOneMock el9a74  $opt '*7.4*'
		getOneMock el10x74 $opt '*7.4*'
		getOneMock el10a74 $opt '*7.4*'

elif [ $1 = all80 ]; then
	[ $opt = remi ] && opt=php80
	[ $opt = test ] && opt=test80
		getOneMock fc39x80 $opt '*8.0*'
		getOneMock fc39a80 $opt '*8.0*'
		getOneMock fc40x80 $opt '*8.0*'
		getOneMock fc40a80 $opt '*8.0*'
		getOneMock fc41x80 $opt '*8.0*'
		getOneMock fc41a80 $opt '*8.0*'
		getOneMock el8x80  $opt '*8.0*'
		getOneMock el8a80  $opt '*8.0*'
		getOneMock el9x80  $opt '*8.0*'
		getOneMock el9a80  $opt '*8.0*'
		getOneMock el10x80 $opt '*8.0*'
		getOneMock el10a80 $opt '*8.0*'

elif [ $1 = all81 ]; then
	[ $opt = remi ] && opt=php81
	[ $opt = test ] && opt=test81
		getOneMock fc39x81 $opt '*8.1*'
		getOneMock fc39a81 $opt '*8.1*'
		getOneMock fc40x81 $opt '*8.1*'
		getOneMock fc40a81 $opt '*8.1*'
		getOneMock fc41x81 $opt '*8.1*'
		getOneMock fc41a81 $opt '*8.1*'
		getOneMock el8x81  $opt '*8.1*'
		getOneMock el8a81  $opt '*8.1*'
		getOneMock el9x81  $opt '*8.1*'
		getOneMock el9a81  $opt '*8.1*'
		getOneMock el10x81 $opt '*8.1*'
		getOneMock el10a81 $opt '*8.1*'

elif [ $1 = all82 ]; then
	[ $opt = remi ] && opt=php82
	[ $opt = test ] && opt=test82
		getOneMock fc39x82 $opt '*8.2*'
		getOneMock fc39a82 $opt '*8.2*'
		getOneMock fc40x82 $opt '*8.2*'
		getOneMock fc40a82 $opt '*8.2*'
		getOneMock fc41x82 $opt '*8.2*'
		getOneMock fc41a82 $opt '*8.2*'
		getOneMock el8x82  $opt '*8.2*'
		getOneMock el8a82  $opt '*8.2*'
		getOneMock el9x82  $opt '*8.2*'
		getOneMock el9a82  $opt '*8.2*'
		getOneMock el10x82 $opt '*8.2*'
		getOneMock el10a82 $opt '*8.2*'

elif [ $1 = all83 ]; then
	[ $opt = remi ] && opt=php83
	[ $opt = test ] && opt=test83
		getOneMock fc39x83 $opt '*8.3*'
		getOneMock fc39a83 $opt '*8.3*'
		getOneMock fc40x83 $opt '*8.3*'
		getOneMock fc40a83 $opt '*8.3*'
		getOneMock fc41x83 $opt '*8.3*'
		getOneMock fc41a83 $opt '*8.3*'
		getOneMock el8x83  $opt '*8.3*'
		getOneMock el8a83  $opt '*8.3*'
		getOneMock el9x83  $opt '*8.3*'
		getOneMock el9a83  $opt '*8.3*'
		getOneMock el10x83 $opt '*8.3*'
		getOneMock el10a83 $opt '*8.3*'

elif [ $1 = all84 ]; then
	[ $opt = remi ] && opt=php84
	[ $opt = test ] && opt=test84
		getOneMock fc39x84 $opt '*8.4*'
		getOneMock fc39a84 $opt '*8.4*'
		getOneMock fc40x84 $opt '*8.4*'
		getOneMock fc40a84 $opt '*8.4*'
		getOneMock fc41x84 $opt '*8.4*'
		getOneMock fc41a84 $opt '*8.4*'
		getOneMock el8x84  $opt '*8.4*'
		getOneMock el8a84  $opt '*8.4*'
		getOneMock el9x84  $opt '*8.4*'
		getOneMock el9a84  $opt '*8.4*'
		getOneMock el10x84 $opt '*8.4*'
		getOneMock el10a84 $opt '*8.4*'

elif [ $1 = allr60 ]; then
	opt=redis60
	getOneMock fc39x $opt '*6.0*'
	getOneMock fc39a $opt '*6.0*'
	getOneMock fc40x $opt '*6.0*'
	getOneMock fc40a $opt '*6.0*'
	getOneMock el8x  $opt '*6.0*'
	getOneMock el8a  $opt '*6.0*'
	getOneMock el9x  $opt '*6.0*'
	getOneMock el9a  $opt '*6.0*'

elif [ $1 = allr62 ]; then
	opt=redis62
	getOneMock fc39x $opt '*6.2*'
	getOneMock fc39a $opt '*6.2*'
	getOneMock fc40x $opt '*6.2*'
	getOneMock fc40a $opt '*6.2*'
	getOneMock el8x  $opt '*6.2*'
	getOneMock el8a  $opt '*6.2*'
	getOneMock el9x  $opt '*6.2*'
	getOneMock el9a  $opt '*6.2*'

elif [ $1 = allr70 ]; then
	opt=redis70
	getOneMock fc39x $opt '*7.0*'
	getOneMock fc39a $opt '*7.0*'
	getOneMock fc40x $opt '*7.0*'
	getOneMock fc40a $opt '*7.0*'
	getOneMock el8x  $opt '*7.0*'
	getOneMock el8a  $opt '*7.0*'
	getOneMock el9x  $opt '*7.0*'
	getOneMock el9a  $opt '*7.0*'

elif [ $1 = allr72 ]; then
	opt=redis72
	getOneMock fc39x $opt '*7.2*'
	getOneMock fc39a $opt '*7.2*'
	getOneMock fc40x $opt '*7.2*'
	getOneMock fc40a $opt '*7.2*'
	getOneMock el8x  $opt '*7.2*'
	getOneMock el8a  $opt '*7.2*'
	getOneMock el9x  $opt '*7.2*'
	getOneMock el9a  $opt '*7.2*'

elif [ $1 = allm ]; then
	opt=remi
	getOneMock el8x  $opt '*1.6*'
	getOneMock el8a  $opt '*1.6*'
	getOneMock fc41x $opt '*1.6*'
	getOneMock fc41a $opt '*1.6*'
	opt=memcached
	getOneMock fc39x $opt '*1.6*'
	getOneMock fc39a $opt '*1.6*'
	getOneMock fc40x $opt '*1.6*'
	getOneMock fc40a $opt '*1.6*'
	getOneMock el9x  $opt '*1.6*'
	getOneMock el9a  $opt '*1.6*'
	getOneMock el10x $opt '*1.6*'
	getOneMock el10a $opt '*1.6*'

elif [ $1 = allx ]; then
	for i in 39 40 41
	do
		getOneMock fc${i}x $opt
	done
	for i in 8 9 10
	do
		getOneMock el${i}x $opt
	done

elif [ $1 = alla ]; then
	for i in 39 40 41
	do
		getOneMock fc${i}a $opt
	done
	for i in 8 9 10
	do
		getOneMock el${i}a $opt
	done

elif [ $1 = scl56 ]; then
	for i in 8
	do
		getOneMock scl56el${i}x $opt
	done

elif [ $1 = scl70 ]; then
	for i in 8
	do
		getOneMock scl70el${i}x $opt
	done

elif [ $1 = scl71 ]; then
	for i in 8
	do
		getOneMock scl71el${i}x $opt
	done

elif [ $1 = scl84 ]; then
	for dis in fc39 fc40 fc41 el8 el9 el10
	do
		getOneMock scl84${dis}x $opt
		getOneMock scl84${dis}a $opt
	done

elif [ $1 = scl83 ]; then
	for dis in fc39 fc40 fc41 el8 el9 el10
	do
		getOneMock scl83${dis}x $opt
		getOneMock scl83${dis}a $opt
	done

elif [ $1 = scl82 ]; then
	for dis in fc39 fc40 fc41 el8 el9 el10
	do
		getOneMock scl82${dis}x $opt
		getOneMock scl82${dis}a $opt
	done

elif [ $1 = scl81 ]; then
	for dis in fc39 fc40 fc41 el8 el9 el10
	do
		getOneMock scl81${dis}x $opt
		getOneMock scl81${dis}a $opt
	done

elif [ $1 = scl80 ]; then
	for dis in fc39 fc40 fc41 el8 el9 el10
	do
		getOneMock scl80${dis}x $opt
		getOneMock scl80${dis}a $opt
	done

elif [ $1 = scl74 ]; then
	for dis in fc39 fc40 fc41 el8 el9 el10
	do
		getOneMock scl74${dis}x $opt
		getOneMock scl74${dis}a $opt
	done

elif [ $1 = scl73 ]; then
	for i in 8
	do
		getOneMock scl73el${i}x $opt
	done
		getOneMock scl73el8a    $opt

elif [ $1 = scl72 ]; then
	for i in 8
	do
		getOneMock scl72el${i}x $opt
	done
		getOneMock scl72el8a    $opt

elif [ $1 = allphp ]; then
	LOG=$(mktemp out.XXXXXXXXXX)
	MOD="all72 all73 all74 all80 all81 all82 all83 all84"
	SCL="scl56 scl70 scl71 scl72 scl73 scl74 scl80 scl81 scl82 scl83 scl84"
	for i in $SCL $MOD
	do	$0 $opt $i | tee $LOG
		if grep -q '64\.rpm' $LOG && grep -q 'pas un dossier mock' $LOG
		then
			echo -en "\n> $i - [enter] >"; read rep
		fi
	done
	rm -f $LOG
else
	for i in $*
	do
		getOneMock $i $opt
	done
fi