#!/bin/bash
#
# Por "Jose A. Gonzalez" <joseangon46@yahoo.es>
# GNU GPL v2 or later
# Con mínimas modificaciones de Marcos Guglielmetti, sobre
# todo explicando (comentando) algunos detalles

# TODO: si ya ha realizado la tarea alguna vez, deberíamos abortar... por ahora el script funciona bien la primera vez, de lo contrario
# habría que reformarlo bastante para que detecte cuáles son los nuevos cambios en los otros menu.lst y actualizar de acuerdo a eso el menu.lst de la partición root de Musix.

# Salimos si ya hemos actuado: 
cat /boot/grub/menu.lst | grep "Modificado por update-grub-total"
if [ "$?" = "0" ]
then
echo "Ya hemos modificado menu.lst anteriormente, saliendo...
Puedes hacer cambios en /boot/grub/menu.lst editándolo manualmente"
exit 1
fi



# Buscamos las distintas particiones en nuestros discos rígidos
# Y por cada una, la montamos.
for i in $(cat /etc/fstab | grep dev/hd | cut -d" " -f1); do

MNT=${i#\/dev\/}
mount /mnt/$MNT

# Luego obtenermos la conformación de los campos que empiezan con
# la palabra title en cada menu.lst
pru=$(cat /mnt/$MNT/boot/grub/menu.lst | grep -A 4 title | uniq | cut -d "#" -f1 | grep -v "\-\-")

# Luego creamos un menu.lst de prueba, temporal.
echo "$pru" >> $HOME/menu.lst

done

# MGG. Ahora resta sumar la información obtenida, al menu.lst de la partición raiz, o, según sea el caso, a la partición donde fue instalado Musix desde el live CD, por lo cual
# Si estamos en el live-CD, haremos lo segundo
# Si estamos en un sistema instalado, haremos lo primero.
INSTALLED="no"
[ -e /KNOPPIX/bin/ash ] || INSTALLED="yes"
if [ "$INSTALLED" = "yes" ]
 then

	# Salimos si ya hemos actuado: 

	cat /boot/grub/menu.lst | grep "Modificado por update-grub-total"
	if [ "$?" = "0" ]
	then
	echo "Ya hemos modificado menu.lst anteriormente, saliendo..."
	exit 1
	fi

 # Musix está instalado en HD, estamos corriendo desde allí
 # Sumando los datos recolectados a menu.lst de la partición root
 cat $HOME/menu.lst >> /boot/grub/menu.lst

 # Creando un flag para no actuar nuevamente
 echo -n "#Modificado por update-grub-total para Musix" >> /boot/grub/menu.lst

else

 # Estamos desde el live-CD
 DESTINO=`cat ~/.knofig | grep HD_CHOICE= | cut -f2 -d"'" | cut -f3 -d"/"`

 echo -n "Musix ha sido instalado en /dev/$DESTINO
montando partición /mnt/$DESTINO"
 sleep 3s
 mount /mnt/$DESTINO

 # Volcando esta información recolectada, allí:
 cat $HOME/menu.lst >> /mnt/$DESTINO/boot/grub/menu.lst-temp

 # Nuevo: dejando sólo las primeras 700 líneas, dado que
 # si el archivo es muy grande, GRUB se confunde.

 cat /mnt/$DESTINO/boot/grub/menu.lst-temp | head -n 700 >> /mnt/$DESTINO/boot/grub/menu.lst
	
 # Creando un flag para no actuar nuevamente
 echo "#Modificado por update-grub-total para Musix" >> /mnt/$DESTINO/boot/grub/menu.lst

fi

# Aquí desmontamos todas las particiones NOTE: ¿es necesario?
for i in $(cat /etc/fstab | grep dev/hd | cut -d" " -f1); do
MNT=${i#\/dev\/}
umount /mnt/$MNT
done