#!/usr/bin/sh

#Licence GPLv3 and later
#Author: Alexey Loginov

export TEXTDOMAIN="aum++"
export TEXTDOMAINDIR="/usr/share/locale"
. gettext.sh

TARGET0="$1"
DISTR_ARCH="$2"
MRC="$3"
DISTR=mageia
DEV_DISTR=cauldron
USER0="mass_rebuild"
HOME0="/home"
TARGET="$DISTR$TARGET0"
DISTRIB="http://mirror.yandex.ru/$DISTR/distrib/$TARGET0/$DISTR_ARCH"
DISTR_MRC="http://packages.mageialinux.ru/$DISTR$TARGET0/$DISTR_ARCH/"
MEDIA1="$DISTRIB/media/core/release"
MEDIA2="$DISTRIB/media/core/updates"
MEDIA3="$DISTRIB/media/core/backports"
MEDIA4="$DISTRIB/media/nonfree/release"
MEDIA5="$DISTRIB/media/nonfree/updates"
MEDIA6="$DISTRIB/media/nonfree/backports"
MEDIA7="$DISTRIB/media/tainted/release"
MEDIA8="$DISTRIB/media/tainted/updates"
MEDIA9="$DISTRIB/media/tainted/backports"

MES0="$(gettext 'Usage:')"
MES1="$(eval_gettext 'the first parameter is distro number, for example, 4 or $DEV_DISTR')"
MES2="$(gettext 'the second parameter is architecture of builing packages, for example, i586 or x86_64')"
MES3="$(gettext 'the third parameter is mrc (optional) - add Mageia Russian Community repo')"
MES4="$(gettext 'You must be root')"
MES5="$(gettext 'Exit')"
MES6="$(eval_gettext 'The first parameter is not number of distro and not $DEV_DISTR')"
MES7="$(gettext 'No architecture by the second parameter')"
MES8="$(eval_gettext 'Unknown architecture $DISTR_ARCH')"
MES9="$(gettext 'urpmi was not found')"
MES10="$(eval_gettext 'There is no directory $MASS_REBUILD/repo/$TARGET/RPMS/noarch')"
MES11="$(eval_gettext 'There is no directory $MASS_REBUILD/repo/$TARGET/RPMS/$DISTR_ARCH')"
MES12="$(gettext 'Nothing to test, there are no packages')"
MES13="$(eval_gettext 'Configuring repos $MEDIA1, $MEDIA2, $MEDIA3, $MEDIA4, $MEDIA5, $MEDIA6, $MEDIA7, $MEDIA8, $MEDIA9 and $MASS_REBUILD/repo/$TARGET/$DISTR_ARCH into $MASS_REBUILD/test')"
MES14="$(eval_gettext 'Configuring repo $MRC')"
MES15="$(eval_gettext 'Configuring repo $MRC was finished')"
MES16="$(eval_gettext 'Option $MRC was ignored for $DEV_DISTR')"
MES17="$(gettext 'Configuring all repos was finished')"
MES18="$(eval_gettext 'Creating minimal system in $MASS_REBUILD/test')"
MES19="$(gettext 'Creating minimal system was finished')"
MES20="$(eval_gettext 'Checking $PKG package')"
MES21="$(eval_gettext 'Checking for $PKG package was finished')"
MES22="$(eval_gettext 'Cleaning $MASS_REBUILD/test')"
MES23="$(eval_gettext 'Cleaning $MASS_REBUILD/test was finished')"
MES24="$(gettext 'Test was finished')"
MES25="$(eval_gettext 'Please see logs in $LOG')"

if [ $# -eq 0 ]
then
  echo "$MES0"
  echo "$MES1"
  echo "$MES2"
  echo "$MES3"
  exit 1
fi
if [ "$(id -u)" != "0" ]
then
  echo "$MES4"
  echo "$MES5"
  exit 1
fi
MASS_REBUILD="$HOME0/$USER0"
LOG="$MASS_REBUILD/test_install.log"
if [ ! "$1" = "$DEV_DISTR" ]
then
  N=$(expr $1 + 0 2>/dev/null) || else echo "$MES6"|tee -a $LOG; exit 1
else
  TARGET="$DEV_DISTR"
fi
if [ -z "$DISTR_ARCH" ]
then
  echo "$MES7"|tee -a $LOG
  exit 1
fi
if [ ! "$DISTR_ARCH" = "i586" ]
then
  if [ ! "$DISTR_ARCH" = "x86_64" ]
  then
    echo "$MES8"|tee -a $LOG
    exit 1
  fi
fi
A=`which urpmi`
if [ -z "$A" ]
then
  echo "$MES9"|tee -a $LOG
  exit 1
fi
if [ ! -d "$MASS_REBUILD/repo/$TARGET/RPMS/noarch" ]
then
  echo "$MES10"
  exit 1
fi
if [ ! -d "$MASS_REBUILD/repo/$TARGET/RPMS/$DISTR_ARCH" ]
then
  echo "$MES11"
  exit 1
fi

PKGS=`ls -1 $MASS_REBUILD/repo/$TARGET/RPMS/noarch|grep -v media_info`
if [ -z "$PKGS" ]
then
  PKGS=`ls -1 $MASS_REBUILD/repo/$TARGET/RPMS/$DISTR_ARCH|grep -v media_info`
  if [ -z "$PKGS" ]
  then
    echo "$MES12"
    exit 1
  fi
fi

echo "$MES13"|tee -a $LOG
rm -rf $MASS_REBUILD/test
mkdir -p $MASS_REBUILD/test
urpmi.addmedia $TARGET-test1 "$MEDIA1" --urpmi-root $MASS_REBUILD/test 2>&1 |tee -a $LOG
urpmi.addmedia $TARGET-test2 "$MEDIA2" --urpmi-root $MASS_REBUILD/test 2>&1 |tee -a $LOG
urpmi.addmedia $TARGET-test3 "$MEDIA3" --urpmi-root $MASS_REBUILD/test 2>&1 |tee -a $LOG
urpmi.addmedia $TARGET-test4 "$MEDIA4" --urpmi-root $MASS_REBUILD/test 2>&1 |tee -a $LOG
urpmi.addmedia $TARGET-test5 "$MEDIA5" --urpmi-root $MASS_REBUILD/test 2>&1 |tee -a $LOG
urpmi.addmedia $TARGET-test6 "$MEDIA6" --urpmi-root $MASS_REBUILD/test 2>&1 |tee -a $LOG
urpmi.addmedia $TARGET-test7 "$MEDIA7" --urpmi-root $MASS_REBUILD/test 2>&1 |tee -a $LOG
urpmi.addmedia $TARGET-test8 "$MEDIA8" --urpmi-root $MASS_REBUILD/test 2>&1 |tee -a $LOG
urpmi.addmedia $TARGET-test9 "$MEDIA9" --urpmi-root $MASS_REBUILD/test 2>&1 |tee -a $LOG
if [ "$MRC" = "mrc" ]
then
  if [ ! "$TARGET" = "$DEV_DISTR" ]
  then
    echo "$MES14"|tee -a $LOG
    urpmi.addmedia --distrib $MRC-$DISTR_ARCH- $DISTR_MRC --urpmi-root $MASS_REBUILD/test 2>&1 |tee -a $LOG
    echo "$MES15"|tee -a $LOG
  else
    echo "$MES16"
  fi
fi
urpmi.addmedia --distrib --urpmi-root $MASS_REBUILD/test "file://$MASS_REBUILD/repo/$TARGET/$DISTR_ARCH" 2>&1 |tee -a $LOG
echo "$MES17"|tee -a $LOG

echo "$MES18"|tee -a $LOG
urpmi --no-verify-rpm --nolock --auto --ignoresize --no-recommends --urpmi-root=$MASS_REBUILD/test --root=$MASS_REBUILD/test basesystem-minimal rpm-build sudo urpmi curl 2>&1 |tee -a $LOG
echo "$MES19"|tee -a $LOG

# noarch
for PKG in `ls -1 $MASS_REBUILD/repo/$TARGET/RPMS/noarch|grep -v media_info`;do
     echo "$MES20"|tee -a $LOG
     urpmi --no-verify-rpm --nolock --auto --ignoresize --test --urpmi-root=$MASS_REBUILD/test --root=$MASS_REBUILD/test $MASS_REBUILD/repo/$TARGET/RPMS/noarch/$PKG 2>&1 |tee -a $LOG
     echo "$MES21"|tee -a $LOG
done

# $DISTR_ARCH
for PKG in `ls -1 $MASS_REBUILD/repo/$TARGET/RPMS/$DISTR_ARCH|grep -v media_info`;do
     echo "$MES20"|tee -a $LOG
     urpmi --no-verify-rpm --nolock --auto --ignoresize --test --urpmi-root=$MASS_REBUILD/test --root=$MASS_REBUILD/test $MASS_REBUILD/repo/$TARGET/RPMS/$DISTR_ARCH/$PKG 2>&1 |tee -a $LOG
     echo "$MES21"|tee -a $LOG
done

echo "$MES22"|tee -a $LOG
rm -rf $MASS_REBUILD/test
echo "$MES23"|tee -a $LOG

echo "$MES24"|tee -a $LOG
echo "$MES25"|tee -a $LOG
