#!/bin/bash

Info () {
title="Info"
author="Peter Starfinger"
mail="E-Mail: info@die-starfingers.de"
year="2021"
app="$(basename $0)"
msgid="The Starbuntu application
<i>\$app</i>
was written by"
info="$(gettext "$msgid" | (export PATH `envsubst --variables "$msgid"`; envsubst "$msgid"))"

yad --center --fixed --title="$title" --window-icon="info" --image="info" --borders=20 --text="$info"$'\n'$'\n'"$author"$'\n'"$mail"$'\n'$'\n'"$year"$'\n' --text-align=center --selectable-labels --button="OK" &
wunwa "$title" > /dev/null; xdotool key Home key Down
}

[ "$1" = "info" ] && Info && exit 0
param="$@"
user=$(whoami)
if [ -n "$user" ] && [[ "$user" != "root" ]]; then
    title=$"Restore Grub"
    text=$"    The restoration of Grub requires root privileges.&#10;&#10;    Proceed anyway?"
    button=$"Help"
    lang_dir=$"C"
    b0=$"Yes"; b1=$"No"
    yad --center --borders=10 --image=grub2 --window-icon=$HOME/.icons/grub2.png --title="$title" --text="$text" --button="$b1":1 --button=$button:"yelp /usr/share/help/$lang_dir/Starbuntu/starbuntu-apps-details.page#restore-grub" --button="Info":"$0 info" --button="$b0":0
    err=$?
    [ $err -eq 0 ] && gksu "xterm -e $0 $param" && exit 0 || exit 1
fi

msg=$"[ End, please press Return! ]"
dev_part=$(df -P . | tail -1 | cut -d' ' -f 1)

if [ ${dev_part: -1} = "1" ] && [ -d "/etc/grub.d.mbr" ]; then
    dev_mbr=${dev_part::-1}

    ln -sfn /etc/grub.d.mbr /etc/grub.d
    grub-mkconfig -o /boot-mbr/grub/grub.cfg
    grub-install --boot-directory=/boot-mbr $dev_mbr
fi

if [ ${dev_part: -1} = "1" ] && [ -d "/etc/grub.d.part" ]; then
    ln -sfn /etc/grub.d.part /etc/grub.d
fi

efi_part="$(lsblk -o KNAME,PARTTYPENAME | grep "EFI System" | awk '{ print $1 }')"
[ -n "$efi_part" ] && mountpoint /boot/efi > /dev/null; [ $? -gt 0 ] && mount /dev/$efi_part /boot/efi

grub-mkconfig -o /boot/grub/grub.cfg
grub-install --force --boot-directory=/boot $dev_part

echo; echo
if [ -z "$param" ]; then
    echo "$msg"
    read
fi

