#!/bin/bash
# vim: ai ts=4 sw=4 et sts=4 ft=sh
#
PMON_CFG="/boot/boot.cfg"
GRUB2_CFG=$(readlink -f /etc/grub.conf 2>/dev/null)
[ -f "$GRUB2_CFG" ] || GRUB2_CFG=$(readlink -f /etc/grub2-efi.cfg 2>/dev/null)

grub_arrange()
{
    menu_count=$(grep -c '^[ \t]\{0,\}menuentry ' ${GRUB2_CFG})

    if [ ${menu_count} -gt 2 ]; then
        start_line=$(grep -no '^[ \t]\{0,\}menuentry ' ${GRUB2_CFG} | sed -n 2p | awk -F":" '{print $1}')
        end_line=$(grep -no '^[ \t]\{0,\}menuentry ' ${GRUB2_CFG} | sed -n \$p | awk -F":" '{print $1}')
        sed -i ${start_line},$((${end_line}-1))d ${GRUB2_CFG}
    fi
}

grub_to_pmon()
{
    cat > ${PMON_CFG} <<EOF
timeout 5
default 0
showmenu 1

EOF
    while read line; do
        LINE=$(echo ${line} | sed -n '/^[ \t]\{0,\}menuentry /p;/^[ \t]\{0,\}linux/p;/^[ \t]\{0,\}initrd/p')
        if [ "x${LINE}" != "x" ]; then
            SECTION=$(echo ${LINE} | cut -c1-5)
            case ${SECTION} in
            "menue"*)
                TITLE="$(echo ${LINE} | sed 's/menuentry/title/g;s/ --.*//g')"
                echo "${TITLE}" >> ${PMON_CFG}
                ;;
            "linux"*)
                KERNEL="$(echo ${LINE} | sed 's/linux /kernel (wd0,0)/g;s/ root=.*//g')" 
                ARGS="$(echo ${LINE} | awk '{$1=""; $2=""; print $0}')"
                echo -e "\t${KERNEL}" >> ${PMON_CFG}
                ;;
            "initr"*)
                INITRD=$(echo ${LINE} | sed 's/initrd /initrd (wd0,0)/g') 
                echo -e "\t${INITRD}" >> ${PMON_CFG}
                echo -e "\targs${ARGS}" >> ${PMON_CFG}
                echo -e "" >> ${PMON_CFG}
                ;;
            esac
        fi
    done < ${GRUB2_CFG}
}

if [ -f ${GRUB2_CFG} ]; then
    grub_arrange
    grub_to_pmon
fi
