#!/usr/bin/bash
#Facilitando Mandriva
#Autor: José Alberto Valle Cid (katnatek en blogdrake)
#Contribuciones: Gonzalo Seguel Ceballos (Madek en BlogDrake)
#Agradecimientos: 
# A todos los Bofh de Blogdrake que colaboraron con sus sugerencias
# A todos los que indirectamente han contribuido con el desarrollo
#  de este script en el siguiente hilo de blogdrake http://blogdrake.net/node/15932
# A will por darle promoción en los foros Brasileños y
# la traducción al portugués
export TEXTDOMAIN="Tuningdrake"
applang="$(locale|grep LANG|cut -d '=' -f 2|cut -d '.' -f 1|cut -d '_' -f 1)"
case "$applang" in
	es|pt|fr);;
	*)export LANGUAGE=en;;
esac
#Version 2.3.0 08/oct/2023
#Debido a que sufrira pocos cambios en el futuro
#he decidido poner la version solo como dato informativo

export IFS=" "

export NumMediaAct="0"

#Salvaguarda en caso de que gettext no este instalado
if ! which gettext ; then
	alias gettext echo
fi

function Pausa
{
	if [ -n "$1" ]; then
		echo -n "$(gettext "Presione enter para terminar ...")"
		read resp;
	fi
}
function Uso
{
  clear	
  printf "$(gettext "Forma de ejecutar TuningDrake:")

tuningdrake  --file %s

%s" "$(gettext "archivo")" "$(gettext "para procesar un archivo de acciones")">&2
 echo
 echo "$(gettext "Para conseguir el archivo de acciones en un navegador abra la pagina")" 
 echo
 if [ -n "$COMUSR" ]; then
	Extra="&user=$COMUSR"
 fi
 echo "http://ftp.blogdrake.org/TuningDrake/?distro=$dist&version=$Version&arch=${DistArch}${Extra}"
 Pausa $1
 exit 1;
}

#sbin no esta incluido por defecto en la trayectoria
#lo agrego aquí para evitar que falle en encontrar
#urpmi y urpme
export PATH=${PATH}:/sbin
if [ "$UID" != 0 ]; then
	export COMUSR="$USER"
fi
Dist="`cat /etc/release|cut -d ' ' -f 1`"
if [ "$Dist" == "Mandriva" ]; then
	export DistArch="`cat /etc/release|cut -d ' ' -f 7`"
	if [ -z "`grep -i cooker /etc/release`" ]; then
		export Version="`cat /etc/release|cut -d ' ' -f 4`"
	else
		export Version="cooker"
		export Devel="TRUE"
	fi
	export dist="mdv"
else
	export DistArch="`cat /etc/release|cut -d ' ' -f 6`"
	if [ -z "`grep -i cauldron /etc/release`" ]; then
		export Version="`cat /etc/release|cut -d ' ' -f 3`"
	else
		export Version="cauldron"
		export Devel="TRUE"
	fi
	export dist="mga"
fi
export ADDMEDIA="urpmi.addmedia --wget"
export INSTALL="urpmi --wget --allow-recommends"
export Arch="`uname -m`"
export JavaVersion=""
export idioma="`locale|grep LANG|cut -d '=' -f 2|cut -d '.' -f 1`"
if [ ! "$idioma" = "pt_BR" ]; then
 export idioma="`echo $idioma|cut -d '_' -f 1`";
fi
export RepoFail=""
export ErrorDialog="echo"
Silent=0
archivo=""
pausa=1
if [ $# = 0 ]; then
	Uso
fi
while [ $# -gt 0 ]; do
 parametro=$1
 shift
 case "$parametro" in
   "--silent") Silent=1;continue;;
   "--file")
     parametro="$1"
     shift
     if [ -f "$parametro" ]; then
       archivo="$parametro";
      else
       if [ -n "$(echo $parametro|grep file)" ]; then
        archivo=$(echo "$parametro"|cut -d '/' -f 3-);
       else
        Uso;
       fi;
     fi
     continue;;
   *)Uso;;
 esac;
done
if [ -f "$archivo" ]; then
	if [ -n "$(grep -f /etc/Tuningdrake/unsecure $archivo)" \
		-o -n "$(grep -v -f /etc/Tuningdrake/secure $archivo)" ]; then
		clear
	echo "$(gettext "El archivo conteniene acciones invalidas,
si se equivoco de archivo y no desea repetir todo el proceso ejecute
tuningdrake --file")" "$(gettext "archivo")"
		Pausa $pausa
		exit 1;
	fi
fi
clear
if [ "$Silent" = 0 ]; then
	echo "TuningDrake"
	echo;
	echo "$(printf "$(gettext "Este script pretende facilitar la configuración inicial de %s
	Configurando los Repositorios más usados, los codecs y plugins necesarios.
	También permite configurar varias aplicaciones para diversos usos, entre ellos Mensajería Instantánea, \
	Reproducción de Audio/Vídeo, etc.
	Las opciones predeterminadas se basan en preferencias personales y/o sugerencias de usuarios de BlogDrake.
	
	Licencia: GPL 2 ó superior")" "$Dist")";
	
	echo "$(gettext "Advertencia sobre Software No Libre")" 
	echo
	echo "$(gettext "Al ejecutar esta aplicación se instalara Software Privativo (No Libre),
	si desea conservar un sistema Libre debe finalizar la ejecución ahora.
	
	¿Desea continuar?")" "(1=$(gettext "S")/2=$(gettext "N"))"
	read resp
	while [ "$resp" != "1" -a "$resp" != "2" ]; do
		echo "$(gettext "Respuesta incorrecta")" >&2
		echo -n "$(gettext "¿Desea continuar?") (1=$(gettext "S")/2=$(gettext "N"))"
		read resp;
	done;
	if [ "$resp" = "2" ]; then exit 1; fi
	if [ "$UID" != 0 ]; then
		echo "$(gettext "Proporcione clave de root")"
		pkexec $0 --silent --file $archivo
		exit $?
	fi
fi
if [ "$UID" == 0 ]; then
	if [ -n "$PKEXEC_UID" ]; then
		COMUSR="$(grep $PKEXEC_UID /etc/passwd | cut -f1 -d:)"
	fi
	rm -f /var/cache/urpmi/mirrors.cache
	. "$archivo"
	#Mensaje final
	 if [ -z "$RepoFail" ]; then
	  Pausa $pausa
	  #clear
	  echo "`printf "$(gettext "Felicidades %s TuningDrake ha configurado exitosamente su %s Linux.
	Cierre su sesión y vuelva a iniciarla para que todos los cambios
	se efectúen")" "$COMUSR" "$Dist"`"
	 else
	  echo "`printf "$(gettext "Fallo al intentar configurar los repositorios %s
	%s vuelva a ejecutar TuningDrake %s ")" "$RepoFail" "$(gettext ",\n algunas aplicaciones tal vez no se instalaron,")" \
	"$(gettext "ó añada manualmente lo que falte")"`"
	 fi
	 echo
	 echo "$(gettext "El software disponible en los repositorios es muy vasto y TuningDrake
	 solo ha instalado una fracción de lo existente. Utilice el administrador de software
	 (rpmdrake) para conocer más del software a su disposición.")"
	 echo
	 echo -n "$(gettext "Presione enter para terminar ...")"
	 read resp
	 if [ -n "`grep kernel $archivo`" ]; then 
	  echo -n "$(gettext "Ha elegido actualizar el kernel, para activar el nuevo kernel necesita
	reiniciar el equipo ¿Desea reiniciarlo ahora?")" "(1=$(gettext "S")/2=$(gettext "N"))"
	  read resp
	  while [ "$resp" != "1" -a "$resp" != "2" ]; do
	   echo "$(gettext "Respuesta incorrecta")">&2
	   echo -n "$(gettext "¿Desea que el reiniciar el equipo?")" "(1=$(gettext "S")/2=$(gettext "N"))"
	   read resp;
	  done;
	  if [ $resp = "1" ]; then reboot; fi;
	 fi
	 exit 0
fi
