#!/bin/sh

TODOY="-y"
[ "$IAHEAD" ] && IAHEAD="$IAHEAD/bootcdtest" || IAHEAD="bootcdtest"
SPACE=/var/spool/bootcdtest
TODO="" mm=0
ROOT=""
ERRLOG="/var/log/bootcdtest.log"
DEBSDIRSTANDARD="/var/cache/apt/archives"
DEBSDIR="$DEBSDIRSTANDARD"

# Used Environment variables (has to be set before "set -u" from bootcd-run.lib)
http_proxy="$http_proxy" 

usage()
{
  [ "$1" ] && echo  >&2 "ERROR: $1"

   echo >&2 "USAGE: $(basename $0) [-i] [-s <space>] # test bootcd."
   echo >&2 "  -i           -- interactiv operation"
   echo >&2 "  -s <space>   -- empty directory with space for tests"
   echo >&2 "  -debs <dir>  -- directory with needed debs"
   echo >&2 ""
   exit 1
}

while [ "$1" ]; do
  case "$1" in
  "-i")
    TODOY=""
    shift
    ;;
  "-s")
    SPACE="$2"
    shift 2
    ;;
  "-debs")
    DEBSDIR="$2"
    shift 2
    ;;
  *)
    usage "ERROR: option \"$1\" unknown!"
    ;;
  esac
done

# check if started as root
[ "$(whoami)" = "root" ] || usage "this script must be started as root"

# read bootcd-run.lib
if [ -f ./bootcd-run.lib ]; then
  echo "Using local ./bootcd-run.lib" >&2
  . ./bootcd-run.lib
elif [ -f $ROOT/usr/share/bootcd/bootcd-run.lib ]; then
  . $ROOT/usr/share/bootcd/bootcd-run.lib
else
  echo "Error: Mandatory lib bootcd-run.lib not found! ABORT!"
  exit 1
fi

init()
{
  [ "$SPACE" ] || usage "SPACE is not defined"
  [ -e $SPACE ] && usage "$SPACE already exists, please remove it first"
  mkdir $SPACE
}
mm=$(($mm+1)); eval IGNORE${mm}=\"\"; eval STDOUT${mm}=\"\"
TODO="$TODO \"init # mkdir $SPACE\""

test_bootcddebootstrap_dir()
{
  local IAHEAD="$IAHEAD/test_bootcddebootstrap"
  local TODO="" mm=0
  export IAHEAD # to be used by bootcddebootstrap

  if [ "$DEBSDIR" = "$DEBSDIRSTANDARD" ]; then
    mm=$(($mm+1)); eval local IGNORE${mm}=\"\"; eval local STDOUT${mm}=\"\"
    in_norun $mm
    TODO="$TODO \"apt-get install --yes --reinstall --download-only debootstrap bootcd bootcd-backup bootcd-i386 bootcd-mkinitramfs\""
  fi

  mm=$(($mm+1)); eval local IGNORE${mm}=\"\"; eval local STDOUT${mm}=\"\"
  in_norun $mm
  TODO="$TODO \"/usr/share/doc/bootcd-backup/examples/bootcddebootstrap <-i> -d $SPACE/space $DEBSDIR\""

  eval "interactive $TODOY -r -h \"=== \$IAHEAD ===\" $TODO"
}
mm=$(($mm+1)); eval IGNORE${mm}=\"\"; eval STDOUT${mm}=\"\"
in_norun $mm
TODO="$TODO \"test_bootcddebootstrap_dir # using bootcd and debootstrap packages from $DEBSDIR\""

test_bootcddebootstrap_deb()
{
  local IAHEAD="$IAHEAD/test_bootcddebootstrap"
  local TODO="" mm=0
  export IAHEAD # to be used by bootcddebootstrap

  if [ "$DEBSDIR" = "$DEBSDIRSTANDARD" ]; then
    mm=$(($mm+1)); eval local IGNORE${mm}=\"\"; eval local STDOUT${mm}=\"\"
    in_norun $mm
    TODO="$TODO \"apt-get install --yes --reinstall --download-only debootstrap\""
  fi

  mm=$(($mm+1)); eval local IGNORE${mm}=\"\"; eval local STDOUT${mm}=\"\"
  in_norun $mm
  TODO="$TODO \"/usr/share/doc/bootcd-backup/examples/bootcddebootstrap <-i> -d $SPACE/space /var/cache/apt/archives/debootstrap_*.deb\""

  eval "interactive $TODOY -r -h \"=== \$IAHEAD ===\" $TODO"
}
mm=$(($mm+1)); eval IGNORE${mm}=\"\"; eval STDOUT${mm}=\"\"
in_norun $mm
TODO="$TODO \"test_bootcddebootstrap_deb # using debootstrap package from $DEBSDIR\""

eval "interactive $TODOY -r -h \"=== \$IAHEAD ===\" $TODO"
