#!/bin/sh
#
# VMTux.net
#
# vmt-upgrade - make bootable partition on ${VMT_DEVICE}
#
. /etc/vmt/vmt-conf
. /etc/vmt/vmt-colors

if [ "$(id -u)" -eq 0 ]; then echo "${BRed}don't run as root${Reset}" ; exit 1; fi

BOOT=${VMT_DEVICE}/boot

blockname=$(basename $(readlink ${VMT_DEVICE}))

BOOTDEVICE="/dev/$(basename $(readlink -f /sys/class/block/${blockname}/..))"

if [ "$1" == "--help" ]; then
  echo "usage: $(basename $0) [--kernel ${VMT_KERNEL}] [--release ${VMT_RELEASE}] [--boot ${BOOTDEVICE}]"
  exit 0
fi

if [ "$1" == "--kernel" ]; then
  VMT_KERNEL="$2"
  shift 2
fi

if [ "$1" == "--release" ]; then
  VMT_RELEASE="$2"
  shift 2
fi

if [ "$1" == "--device" ]; then
  BOOTDEVICE="$2"
  shift 2
fi

read -p "Install vmlinuz64-${VMT_KERNEL} and vmtux64-${VMT_RELEASE} on ${BOOT} [Yn]: " yesno

if [ "$yesno" != "Y" ]; then echo "exit" ; exit 0; fi

sudo mkdir -p ${BOOT}
kernel=vmlinuz64-${VMT_KERNEL}
echo -n "downloading ${kernel} ..."
MD5=$(wget -q ${VMT_MIRROR_URL}/${VMT_RELEASE}/boot/VMTux-${VMT_KERNEL}/${kernel}.md5 -O - | awk '{ printf $1 }')
MD5CHECK=$(md5sum ${BOOT}/${kernel} 2>/dev/null | awk '{ printf $1 }')
if [ "${MD5}" != "${MD5CHECK}" ]; then
  sudo wget -q ${VMT_MIRROR_URL}/${VMT_RELEASE}/boot/VMTux-${VMT_KERNEL}/${kernel} -O ${BOOT}/${kernel}
  if [ $? -ne 0 ]; then echo "error" ; exit 1 ; fi
  echo "done"
else
  echo "existing"
fi

initrd=vmtux64-${VMT_RELEASE}.gz
echo -n "downloading ${initrd} ..."
MD5=$(wget -q ${VMT_MIRROR_URL}/${VMT_RELEASE}/boot/VMTux-${VMT_KERNEL}/${initrd}.md5 -O - | awk '{ printf $1 }')
MD5CHECK=$(md5sum ${BOOT}/${initrd} 2>/dev/null | awk '{ printf $1 }')
if [ "${MD5}" != "${MD5CHECK}" ]; then
  sudo wget -q ${VMT_MIRROR_URL}/${VMT_RELEASE}/boot/VMTux-${VMT_KERNEL}/${initrd} -O ${BOOT}/${initrd}
  if [ $? -ne 0 ]; then echo "error" ; exit 1 ; fi
  echo "done"
else
  echo "existing"
fi

echo "creating/updating grub.cfg"
sudo mkdir -p ${BOOT}/grub
sudo dd status=none of=${BOOT}/grub/grub.cfg << EOF
# VMTux.net grub.cfg
set default=0
set timeout=0
hiddenmenu
menuentry "${kernel} `date`" {
 clear
 linux /boot/${kernel} loglevel=3
 initrd /boot/${initrd}
}
EOF

if [ ! -x /usr/local/sbin/grub-install ]; then
  vmt-install grub-2.06 >/dev/null
fi

read -p "grub-install on device ${BOOTDEVICE} [Yn]: " yesno

if [ "$yesno" != "Y" ]; then echo "exit" ; exit 0; fi

sudo grub-install --boot-directory=${BOOT} ${BOOTDEVICE}

if [ $? -ne 0 ]; then
  echo "error"
  exit 1
fi

echo

echo "some bios checks bootable flag on a partition to load grub (use fdisk)"
echo "it is a good time to reboot"

exit 0
