#Version 2.3.0 12/oct/2023
#
#Este archivo es el que hace en verdad el trabajo
#Originalmente se creo como archivo separado
#para evitar codigo redundante en los tres sabores 
#que Tuningdrake era ofrecido:
#dialogos gtk, dialogos qt/kde y linea de comandos/texto
#
#Ahora basicamente sirve para simplificar el archivo de
#acciones que se descarga desde la pagina web que sirve
#como interfaz de usuario en la etapa de selección de opciones
#
#He desechado la versión para openmandriva por no poder hacer pruebas
#
#Se ha actualizado a la paqueteria ofrecida en mageia
export TEXTDOMAIN="Tuningdrake"
if [ $# = 0 -o -z "$ADDMEDIA" ] ; then
 echo "$(gettext "Tuningdrake-backend no esta diseñado para ejecutarse directamente
por favor utilice alguna de las variantes de TuningDrake")" >&2
 exit 1;
fi

case $1 in
 "checkrepo")
  mgarepos="Core Release
Core Updates
Nonfree Release
Nonfree Updates
Tainted Release
Tainted Updates"
  mgarepos32="Core 32bit Release
Core 32bit Updates
Nonfree 32bit Release
Nonfree 32bit Updates
Tainted 32bit Release
Tainted 32bit Updates"
  shift
  tipo_repo="$1"
   NumMediaOld="$NumMediaAct"
   NumMediaAct="`urpmq --list-media active|wc -l`"
   if [ "$NumMediaAct" = "$NumMediaOld" ]; then
    case $tipo_repo in
     "oficial") RepoFail="$(gettext "Oficiales")"
		case "$DistArch" in
			"i586") if [ $NumMediaAct -lt 6 ] || ! urpmq --list-media active|grep -F "$mgarepos" ; then
						printf "%s %s\n%s\n" "$(gettext "Fallo al intentar configurar los repositorios")" "$RepoFail" "$(gettext "No se puede continuar")"
						exit 1
					fi
					;;
				
			"x86_64") if [ $NumMediaAct -lt 12 ] || ! urpmq --list-media active|grep -F "$mgarepos
$mgarepos32" ; then
						echo "`printf "%s %s\n%s" "$(gettext "Fallo al intentar configurar los repositorios")" "$RepoFail" "$(gettext "No se puede continuar")"`"
						exit 1
					fi
					;;
			esac
			;;
     "plf") RepoFail="$RepoFail
PLF";;
     "rest")RepoFail="$RepoFail
RESTRICTED";;
     "comu")RepoFail="$RepoFail
$(gettext "Comunitario") $@";;
     esac
    export RepoFail;
   fi;;
  
 "sound")
  #Configuración de Reproductor de Audio
  shift 1
  for i in $@ ; do
   case $i in
    "exaile")$INSTALL  --auto exaile streamripper;;
    *) $INSTALL  --auto $i;;
   esac;
  done;;
 
 "video")
  #Configuración de Reproductor de Video
  shift 1
  for i in $@ ; do
   case $i in
    "smplayer") $INSTALL --auto smplayer mpv;;
    "vlc")$INSTALL --auto vlc vlc-plugin-libass vlc-plugin-flac vlc-plugin-fdkaac \
    vlc-plugin-pulse vlc-plugin-theora vlc-plugin-gnutls vlc-plugin-vdpau \
    vlc-plugin-lua vlc-plugin-twolame vlc-plugin-dv vlc-plugin-mod \
    vlc-plugin-sdl vlc-plugin-speex vlc-plugin-fluidsynth vlc-plugin-schroedinger;;
    *)$INSTALL  --auto $i;;
   esac;
  done;;

 "genericos")
    #Activar repositorios necesarios que pudieran estar deshabilitados
  IFS="
"
   urpmi.update -ff --no-ignore \
   $(urpmq --list-media|grep -vi -F "testing
backports
src
debug")
  IFS=" "
  urpmi.update --wget -a
  #No esta trabajando actualmente
  #JavaVersion="`urpmq --fuzzy java|grep -e "openjdk"$|sort -rd|cut -d '
  #' -f 1|cut -d '-' -f 2`"

  #Dependencias necesarias para TuningDrake, se instalan aqui para aligerar las dependencias
  #A esta altura ya deberiamos tener repositorios configurados
  
  $INSTALL  --auto  binutils diffutils xterm zenity gettext
  $INSTALL  --auto get-widevine
  alias|grep gettext && unalias gettext
  #Instalar Aplicación de Configuración de Impresoras
  #En las ediciones One por falta de espacio no viene
  #incluida en el medio.
  $INSTALL  --auto system-config-printer;
   
  #Codecs
  #$INSTALL  --auto  gstreamer1.0-decoders
  #$INSTALL  --auto  xine-faad xine-plugins xine-pulse libamrnb3 libamrwb3 amrnb amrwb
  #$INSTALL  --auto lame gstreamer0.10-a52dec gstreamer0.10-amrnb gstreamer0.10-amrwb\
  #gstreamer0.10-faad gstreamer0.10-faac gstreamer0.10-ffmpeg mencoder gstreamer0.10-lame gstreamer0.10-wildmidi
  #$INSTALL  --auto gstreamer0.10-flac gstreamer0.10-cdio gstreamer0.10-cdparanoia\
 #ffmpeg mencoder transcode libdvdcss gstreamer0.10-mms gstreamer0.10-plugins-good gstreamer0.10-plugins-bad \
 #gstreamer0.10-plugins-ugly mplayer gstreamer0.10-mpeg
 $INSTALL --auto gstreamer1.0-mpeg lame ffmpeg mencoder transcode libdvdcss \
  task-codec-audio task-codec-video gstreamer1.0-amrnb gstreamer1.0-amrwbdec \
  gstreamer1.0-a52dec gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-mpeg2enc\
  gstreamer1.0-plugins-ugly gstreamer1.0-faad gstreamer1.0-fdkaac gstreamer1.0-lame \
  gstreamer1.0-vp8 gstreamer1.0-x264 gstreamer1.0-x265
 
 #RemoDK=0
 #if urpmq --list-media active|grep BDK ; then
  #RemoDK=1
  #urpmi.addmedia --wget --distrib http://ftp.blogdrake.org/mageia/mageia${Version}/${DistArch}
    #Para que los paquetes de blogdrake con interfaz aparezcan en el filtro
	#"Paquetes con interfaz de usuario" en rpmdrake 
	#$INSTALL --auto blogdrake-gui-packages 
	#$INSTALL --auto faac libfaac 
 #fi

 #if [ $RemoDK -eq 1 ]; then
  #urpmi.removemedia BDK-Free-${DistArch} BDK-Free-noarch BDK-NonFree-${DistArch}
 #fi
  #Plugins
  #urpme gnash-firefox-plugin gnash-konqueror-plugin swfdec-gnome swfdec-mozilla
  #urpme nspluginwrapper-i386 nspluginwrapper freshplayerplugin flash-player-plugin
  #$INSTALL  --auto libnss3
  #$INSTALL --auto icedtea-web
  #$INSTALL  --auto mozilla-plugin-dejavu 
  #$INSTALL  --auto java-${JavaVersion}-openjdk
  #update-alternatives --set java /usr/lib/jvm/jre-${JavaVersion}-openjdk/bin/java
  $INSTALL  --auto  alsa-plugins-pulseaudio 
   
  #Graficos
  $INSTALL  --auto gimp-xsanecli
  
  #if [ ! "$idioma" = "pt_BR" ]; then
   #idioma2="`echo $idioma|cut -d '_' -f 1`";
  #fi
  
  case "$idioma" in
  "pt_BR")
	idioma2="br"
	idioma3="$idioma";;
	"pt_PT")
	idioma2="pt"
	idioma3="pt_BR";;
	*) idioma2="$idioma"  
	   idioma3="$idioma";;
  esac
  
  #Manuales, autocompletado y documentacion
  $INSTALL bash-completion bash-doc coreutils-doc
  $INSTALL  --auto man-pages-${idioma3}
  
  #Correción ortografica
  #if [ -z "`echo $idioma|grep "_BR"`" ] ; then
   #$INSTALL  --auto aspell-${idioma2} ;
  #else
   #$INSTALL  --auto aspell-br ;
  #fi
  $INSTALL  --auto hunspell-${idioma2} ;
  
  #Compatibilidad con particiones win2
  #$INSTALL  --auto ntfs-config; actualmente no es requerido
  
  #Copia el lanzador que abre y cierra la bandeja del sistema al
  #escritorio de c/usuario
  #Nota: el lanzador ahora es parte de las fuentes y por lo tanto
  #		 esta incluido en el rpm
  IFS="
"
  for i in  $(cat /etc/passwd|grep /home|cut -d ':' -f 1) ; do
	if [ "/home/$i" = "/home/Type1" ]; then continue; fi
   #DesktopDir="`grep DESKTOP $i/.config/user-dirs.dirs 2>/dev/null|sed 's/\"//g'|cut -d '/' -f 2`"
   DesktopDir="$(su -l $i -c " xdg-user-dir DESKTOP" 2>/dev/null)"
   if [ -z "$DesktopDir" ]; then DesktopDir="/home/$i/Desktop"; fi
   cp -f /usr/share/applications/CD-DVD.desktop $DesktopDir/CD-DVD.desktop  2>/dev/null  
   chmod a+rwx $DesktopDir/CD-DVD.desktop
  done
  IFS=" "
  #Obsoleto?
  #if [ -c "`rpm -qa|grep kde`" ]; then
  # $INSTALL  --auto phonon-xine flash-player-plugin-kde ;
  # if [ "$DistArch" = "x86_64" ] ; then
  #  $INSTALL --auto lib64kutils
  # else
  #  $INSTALL --auto libkutils 
  # fi	   
  #fi
  ;;
  
 "plugin")
   shift 1
   for i in $@ ; do
    case $i in
     "mplayer") $INSTALL  --auto mplayerplugin gecko-mediaplayer;;
     "kmplayer") $INSTALL  --auto kmplayer-npplayer;;
     "adobe") 
		latest-flash-plugin npapi
		echo 
		echo "$(gettext "ejecute periodicamente")" 
		echo "latest-flash-plugin npapi"
		echo "$(gettext "para actualizar el plugin")"
		echo;;
     "pepper")
		latest-flash-plugin ppapi
		echo 
		echo "$(gettext "ejecute periodicamente")" 
		echo "latest-flash-plugin ppapi"
		echo "$(gettext "para actualizar el plugin")"
		echo;;
	  "fresh")
		$INSTALL  --auto freshplayerplugin
		latest-flash-plugin ppapi
		echo 
		echo "$(gettext "ejecute periodicamente")" 
		echo "latest-flash-plugin ppapi"
		echo "$(gettext "para actualizar el plugin")"
		echo;;
	  "both")
		latest-flash-plugin both
		echo 
		echo "$(gettext "ejecute periodicamente")" 
		echo "latest-flash-plugin both"
		echo "$(gettext "para actualizar el plugin")"
		echo;;
	   "widevine")
	     #rpm -q --nosignature chromium-browser-stable
	     #if [ $? != 0 ]; then
			#$INSTALL  --auto chromium-browser-stable
	     #fi
	     get-widevine
	     #Pensar en un mejor mensaje
	     #ejecute get-widevine c/que se actualize chromium?
	     echo "$(gettext "ejecute periodicamente")" 
		 echo "get-widevine"
		 echo "$(gettext "para actualizar el plugin")"
		 echo;;
	esac
   done;;
 "im")
  #Mensajeria instantanea
  shift 1
  for i in $@ ; do
   case $i in
    "pidgin")$INSTALL  --auto pidgin pidgin-musictracker \
    pidgin-plugins pidgin-skypeweb pidgin-plugin-pack;;
	*)$INSTALL --auto $i;;
   esac;
  done;;
  
  "voip")
  #VoIP y videoconferencia
  shift 1
  for i in $@ ; do
   case $i in
    #el paquete oficial solo soporta 64bit
    #"skype")
    #   if [ -n "`rpm -qa|grep skype`" ]; then urpme skype; fi
    #   $INSTALL  --auto get-skype;;
    *)$INSTALL  --auto $i;;
   esac;
  done;;

 "web")
  #Navegadores Web
  shift 1
  rm -f /etc/Tuningdrake/*.spec
  for i in $@ ; do
   case $i in
	"foxkeep") latest-firefox --all;;
	"foxremove") latest-firefox --all --removeesr;;
	chromium-browser-stable|serpent-browser|newmoon-browser) $INSTALL  --auto $i;;
	*)
	    if [ "$browser" = "yandex" ]; then
		 browser_branch="beta"
		else
			browser_branch="stable"
		fi
		#[ ! -f /etc/Tuningdrake/$i.spec ] && continue
		#[ "$Arch" != "x86_64"  -a "$i" = "yandex" ] && continue
		#bash /etc/Tuningdrake/browser-update $i
	;;
   esac;
  done
  ;;
  
  "p2pbt")
  #Cliente Bittorrent
  shift 1
  $INSTALL --auto $@ ;;

 "burn")
  #Quemador
  shift 1
  #No hay casos especiales en esta sección
  if [ $# -gt 0]; then 
	$INSTALL --auto $@ 
  fi;;

 "zip")
  #Compresores/Descompresores
  #Nota: normalmente varios de los paquetes vienen instalados de forma predeterminada
  #pero por si acaso pongo todos los que se pueden poner de la lista
  #proporcionada por el usuario Drakor en http://blogdrake.net/node/13532
  $INSTALL  --auto gzip bzip2 tar zip unzip unrar lha p7zip arj unarj unzoo unace cabextract
  shift 1
  #No hay casos especiales en esta sección
  if [ $# -gt 0 ]; then 
	$INSTALL --auto $@ 
  fi;;
  
  "devel")
  #Paquetes para el desarrollo de aplicaciones
  shift 1
  $INSTALL  --auto task-c-devel task-c++-devel gcc-gfortran 
  #$INSTALL  --autojava-${JavaVersion}-openjdk-devel;
  for i in $@ ; do
   case $i in
    "anjunta")$INSTALL  --auto anjunta anjunta-extras;;
    "codeblocks")$INSTALL  --auto codeblocks xterm;;
    "eclipse")$INSTALL  --auto $(urpmq --list|grep ^eclipse);;
    "gambas")$INSTALL  --auto $(urpmq --list|grep ^gambas3|grep -v devel);;
    "glade")$INSTALL  --auto glade;;
    "kdevelop")$INSTALL  --auto kdevelop;;
    #"netbeans")$INSTALL  --auto netbeans;;
    "qt-creator")$INSTALL  --auto qt-creator;;
    "qdevelop")$INSTALL  --auto qdevelop qdevelop-plugins;;
    "rpm") $INSTALL  --auto task-mageia-packaging rpmlint rpmrebuild \
    rpm-build spec-helper libtool zchunk createrepo_c patcher
     $INSTALL  --auto easyrpmbuilder;;
	"blueFish") $INSTALL  --auto bluefish;;
	"kompozer") $INSTALL  --auto kompozer;;
	#"amaya") $INSTALL  --auto jpeg-devel
	#$INSTALL  --auto --force amaya;;
   esac;
   done;;
 
  "emu")
  #Emuladores y virtulizadores
  shift 1
  for i in $@ ; do
   case $i in
    "wine")if [ "$DistArch" = "i586" ]; then 
	        $INSTALL  --auto wine
		   else
		    $INSTALL  --auto wine64 wine32
		   fi;;
    "qemu") $INSTALL  --auto qemu qemu-launcher;;
    *) $INSTALL  --auto $i;;
    esac;
   done;;

 "kernel")
  #Kernel
  TIPO="`uname -r|cut -d '-' -f 2`"
  $INSTALL  --auto kernel-$TIPO-latest kernel-$TIPO-devel-latest kernel-headers;;

 "pulse")
  #Intentando que los usuarios no tengan problema con pulseaudio
  echo "pcm.!default {"> /etc/skel/.asoundrc
  echo "    type pulse">> /etc/skel/.asoundrc
  echo "}">> /etc/skel/.asoundrc
  echo "ctl.!default {">> /etc/skel/.asoundrc
  echo "    type pulse">> /etc/skel/.asoundrc
  echo "}">> /etc/skel/.asoundrc
  echo "pcm.pulse { type pulse }">> /etc/skel/.asoundrc
  echo "ctl.pulse { type pulse }">> /etc/skel/.asoundrc
  chmod a+rw /etc/skel/.asoundrc
  for i in /home/*; do
   cp -fp /etc/skel/.asoundrc $i/;
  done;;

 "tmp")
  #Limpiar /tmp al inicio
  if [ -z "`grep tmp /etc/rc.local`" ]; then
   echo "cd /tmp;rm -rf *" >> /etc/rc.local;
  fi;;
  *)echo "$(gettext "Tuningdrake-backend no esta diseñado para ejecutarse directamente
por favor utilice alguna de las variantes de TuningDrake")" >&2
 exit 1;;
esac
return 0

