#!/bin/bash

export LANG=C
TIME=$(date -u +%s)

source build.conf || (echo "must be run in the same dir as build.conf" && exit)

DEBIAN_FRONTEND=noninteractive
DEBIAN_PRIORITY=critical
DEBCONF_NOWARNINGS=yes
export PATH DEBIAN_PRIORITY DEBIAN_FRONTEND
export DEBCONF_NOWARNINGS

dostart () {
  mkdir -p $BUILD
  mkdir -p $LOG
}

docdebootstrap () {
  cdebootstrap  --flavour=minimal --arch=$ARCH -v --debug sid $BUILD $MIRROR > $LOG/cdebootstrap 2> $LOG/cdebootstrap.err
}

doprechroot () {
# convert templates/ to files/ based on default/distro
  mkdir -p $BUILD/etc/network
  cp -a $BUILDSRC/files/hosts $BUILD/etc/
  cp -a $BUILDSRC/files/interfaces $BUILD/etc/network/
  cp -a $BUILDSRC/files/fstab $BUILD/etc/
  cp -a $BUILDSRC/files/resolv.conf $BUILD/etc/
  cp -a $BUILDSRC/files/sources.list $BUILD/etc/apt/
  cp -a $BUILDSRC/files/preferences $BUILD/etc/apt/
  cp -a $BUILDSRC/deb/slh-source.sh /usr/src/
#  mkdir -p $BUILD/var/cache/debconf/
#  cp -a $BUILDSRC/files/config.dat $BUILD/var/cache/debconf/
  mkdir -p $BUILD/root/
  cp -a $BUILDSRC/files/install $BUILD/root/
  cp -a $BUILDSRC/files/install-packages $BUILD/root/
  pushd $BUILDSRC/deb
    apt-ftparchive packages ./ > Packages
  popd
  cp -a $BUILDSRC/deb $BUILD/root/
  cp -a $BUILDSRC/files/kernel-img.conf $BUILD/etc/
  touch $BUILD/KNOPPIX.build
#  cp -a $BUILDSRC/files/install-kernel-sidux.sh $BUILD/root/
#  pushd $BUILD/root/sidux/deb
#    touch $BUILDSRC/files/overrides
#    dpkg-scanpackages . $BUILDSRC/files//overrides > Packages
#  popd
}

dochroot () {
  chroot $BUILD /bin/bash /root/install #> $LOG/chroot-install
}

dopreimage () {
  rm $BUILD/KNOPPIX.build
  cp -a $BUILDSRC/files/sudoers $BUILD/etc/
  chmod 440 $BUILD/etc/sudoers
  cp -a $BUILD/root/fll-build-log $LOG
  mkdir -p $BUILDSRC/iso/boot/
  cp -a $BUILD/boot/live* $BUILDSRC/iso/boot/miniroot.gz
  cp -L $BUILD/boot/vmlinuz $BUILDSRC/iso/boot/vmlinuz
  cp -a $BUILD/usr/lib/grub/i386-pc/* $BUILDSRC/iso/boot/grub/
  cp -a $BUILD/boot/message.live $BUILDSRC/iso/boot/message
  cp -a $BUILD/boot/message.hd $BUILDSRC/iso/boot/
  cp -a $BUILDSRC/files/kernel-img.conf.final $BUILD/etc/
  pushd $BUILD
  rm -rf $(cat $BUILDSRC/files/image.rm)
  mkdir $(cat $BUILDSRC/files/image.mkdir)
  touch $(cat $BUILDSRC/files/image.touch)
  popd
}

doimage () {
  MKSQUASHFSOPTS=""
  [ -e files/mksquashfs.sortlist ] && MKSQUASHFSOPTS=" -sort files/mksquashfs.sortlist "
   mksquashfs $BUILD $BUILD.squashfs $MKSQUASHFSOPT
}

dofinal () {
  echo "Done"
}

doclean () {
  rm -rf $BUILD*
  rm -rf $LOG/*
}

OPTCHECK=""
while getopts ascdrRpih opt
do
OPTCHECK="1"
case $opt in
  a) dostart
    docdebootstrap
    doprechroot
    dochroot
    dopreimage
    doimage
  ;;
  s) dostart ;;
  c) docdebootstrap ;;
  d) doclean ;;
  r) doprechroot ;;
  R) dochroot ;;
  p) dopreimage ;;
  i) doimage ;;
  h) echo "No Help :)" ;;
esac
done

[ "$OPTCHECK" ] || (dostart && docdebootstrap && doprechroot && dochroot && dopreimage && doimage)

dofinal

