- La primera línea es distinta al típico /bin/bash para que también podamos ejecutarlo haciendo doble clic sobre el script en un entorno gráfico.
- Definimos la función is_missing_dialog_pkg que comprueba si el paquete dialog está instalado y si no es así lo instala.
- Después de invocar la función para instalar dialog si es preciso entramos en un bucle infinito.
- Se asigna a la variable “seleccion” la salida del comando menugen.sh, pasada a minúsculas. El script ‘menugen.sh’ es el que realmente dibuja los menús y lo veremos más adelante.
- Si se elige “exit” o se cancela el menú se sale del menú y se acaba la ejecución.
- Si existe un archivo en la carpeta menús cuyo nombre sea igual al valor de la variable “seleccion” más la extensión “.txt” se ejecuta de nuevo el script pero pasándole como parámetro el valor de la variable “seleccion”.
- Si selección toma un valor distinto a “exit” se ejecuta el comando cuyo nombre es el valor de la variable selección seguido de “_installer.sh”.
- En este caso también se muestra un texto de ayuda con el script warninggen.sh de la carpeta commonscripts, si existe el archivo warning/seleccion.txt
A continuación podemos ver como quedaría el script:
#!/usr/bin/env bash
function is_missing_dialog_pkg() { #2
if [ ! -f /usr/bin/dialog ]; then
while true; do
read -p "Missing 'dialog' package. Do you wish to let me try to install it for you? (aprox. 1.3 kB) [y/n] " yn
case $yn in
[Yy]*)
./commonscripts/instalator.sh dialog
break
;;
[Nn]*)
echo "Please install 'dialog' package to continue."
exit 1
;;
*) echo "Please answer (y)es or (n)o." ;;
esac
done
fi
}
#3
is_missing_dialog_pkg
#Blue infinito para pintar los menus #3
while true; do
#4
seleccion=$(./commonscripts/menugen.sh $1 | tr '[:upper:]' '[:lower:]')
#5
if [ $seleccion == "exit" ] || [ -z "$seleccion" ]; then
clear
break
fi
#6
if [ -f "./menus/${seleccion}.txt" ]; then
./retroinstaller.sh $seleccion
else
#7
mkdir tmp
clear
echo ">>> Installing ${seleccion}..."
cd tmp
../installers/${seleccion}_installer.sh
#8
../commonscripts/warninggen.sh ${seleccion}
cd ..
fi
done