#!/bin/bash # goStardict - Script Stardict Trunk - by ompolicy # # Email: ompolicy@gmail.com # Site: http://ompolicy.altervista.org which zenity if [ `echo ${PIPESTATUS[*]} | cut -d " " -f 1` -ne 0 ]; then sudo -S apt-get install -y zenity fi namedir="" title="goStardict:" name_prog="stardict" author_ompo="ompolicy" email_ompo="ompolicy@gmail.com" ver_star="1.5" log_install="$HOME/.nude/log/stardict_log_install" log_apt="$HOME/.nude/log/stardict_log_apt" log_svn="$HOME/.nude/log/stardict_log_svn" svnurl="http://stardictproject.googlecode.com/svn/trunk/" function Error100 { zenity --info --text="Errore #100 APT-GET / DPKG nell'installazione dei pacchetti!" zenity --text-info --filename="$log_apt" --text="Errore!" sudo -k exit } function Error101 { zenity --info --text="Errore #101 WGET impossibile scarica il pacchetto!" sudo -k exit } function Error103 { zenity --info --text="Errore #103 SVN nel download del pacchetto!" zenity --text-info --filename="$log_svn" --text="Errore!" sudo -k exit } function MessageLog { zenity --info --text="Errore durante la compilazione!" zenity --text-info --filename="$log_install" --text="Se verificato un errore!" sudo -k exit } function ChooseDirectory { if [ ! -f $HOME/.nude/dirprog ] then touch $HOME/.nude/dirprog fi namedir=`cat $HOME/.nude/dirprog | grep "$name_prog" | cut -d" " -f 2` if [ "$namedir" != "" ] then if [ -d "$namedir/$name_prog" ] then zenity --warning --text="Il programma è già installato!" Start sudo -k exit 0 else Install $namedir fi fi zenity --info --text="Scegli la directory per l'installazione! La directory del programma \"$name_prog\" verrà creata nel percorso specificato" namedir=`zenity --file-selection --directory --title="Scegli la directory di installazione"` if [ "$namedir" == "" ] then Start sudo -k exit 0 fi if [ -O "$namedir" ] then echo $namedir | grep "$name_prog" if [ `echo ${PIPESTATUS[*]} | cut -d" " -f 2` -ne 0 ] then cat $HOME/.nude/dirprog | grep "$name_prog" if [ `echo ${PIPESTATUS[*]} | cut -d" " -f 2` -ne 0 ] then echo "$name_prog $namedir" >> $HOME/.nude/dirprog else sed -e "s%^$name_prog\ .*%$name_prog\ $namedir%" $HOME/.nude/dirprog > $HOME/tmp mv $HOME/tmp $HOME/.nude/dirprog fi Install $namedir else namedir=`dirname $namedir` cat $HOME/.nude/dirprog | grep "$name_prog" if [ `echo ${PIPESTATUS[*]} | cut -d" " -f 2` -ne 0 ] then echo "$name_prog $namedir" >> $HOME/.nude/dirprog else sed -e "s%^$name_prog\ .*%$name_prog\ $namedir%" $HOME/.nude/dirprog > $HOME/tmp mv $HOME/tmp $HOME/.nude/dirprog fi #echo "$name_prog $namedir" >> $HOME/.nude/dirprog fi else zenity --error --text="La cartella non è scrivibile dall'utente" --title="$title" ChooseDirectory fi } function Password { if [ "$pass" == "" ] then pass=`zenity --entry --hide-text --text="Insert Root Password .:"` if [ $? -eq 1 ] then sudo -k exit 1 fi echo "$pass" | sudo -S -l if [ `echo ${PIPESTATUS[*]} | cut -d " " -f 2` -ne 0 ] then pass="" Password fi export $pass fi } function KillSvn { RUNNING=0 while [ $RUNNING -eq 0 ] do if [ -z "$(pidof svn)" ] then sleep 1 RUNNING=1 pkill zenity else if [ -z "$(pidof zenity)" ] then sleep 1 pkill svn exit fi fi done } function ControllOther { namedir=`cat $HOME/.nude/dirprog | grep "$name_prog" | cut -d" " -f 2` ## Controllo se esiste il PATH su dirprog! if [ "$namedir" == "" ] then choose=`zenity --list --text="Il programma sembra non essere installato con NuDe, vuoi importarlo?" --column="Scelta" Si No` if [ `echo ${PIPESTATUS[*]} | cut -d " " -f 1` -ne 0 ] then Start exit fi case "$choose" in "Si") ChooseDirectory ;; "No") Start sudo -k exit 0 ;; esac else ## Controllo se il PATH esiste fisicamente! if [ ! -d "$namedir/$name_prog" ] then zenity --warning --text="Attenzione! Il programma non è installato per procedere avanti bisogna installarlo!" Start sudo -k exit 0 fi fi } function DownSvn { echo "Downloading program..." case "$1" in "CO") echo "p" | svn co $svnurl $namedir/$name_prog 2> $log_svn | awk '{print "File " $2;fflush();}' & KillSvn ;; "UP") echo "p" | svn up $namedir/$name_prog 2> $log_svn | awk '{print "File " $2;fflush();}' & KillSvn ;; "EX") echo "p" | svn export $svnurl $namedir/$name_prog 2> $log_svn | awk '{print "File " $2;fflush();}' & KillSvn ;; esac } function KillWget { RUNNING=0 while [ $RUNNING -eq 0 ] do if [ -z "$(pidof wget)" ] then sleep 1 RUNNING=1 pkill zenity else if [ -z "$(pidof zenity)" ] then sleep 1 pkill wget exit fi fi done } function Dev { echo $pass | sudo -S apt-get install -y --force-yes subversion build-essential automake autoconf libtool libatk1.0-0 libatk1.0-dev libc6 libc6-dev libcairo2 libcairo2-dev libfontconfig1 libfontconfig1-dev libfreetype6 libfreetype6-dev libgcc1 libglib2.0-0 libglib2.0-dev libgtk2.0-0 libgtk2.0-dev libmysqlclient15off libmysqlclient15-dev libpango1.0-0 libpango1.0-dev libpcre3 libpcre3-dev libpng12-0 libpng12-dev libstdc++6 libstdc++6-4.3-dev libx11-6 libx11-dev libxcursor1 libxcursor-dev libxdamage1 libxdamage-dev libxdamage1 libxdamage-dev libxinerama1 libxinerama-dev dictzip zlib1g libsm6 scrollkeeper sgml-data libenchant-dev libgucharmap-dev festival-dev libespeak-dev libsigc++-2.0-dev libespeak1 libespeak-dev libestools1.2 libestools1.2-dev libspeex1 libspeex-dev speech-tools intltool libgconf2-dev libgnomeui-dev 2> $log_apt | zenity --progress --auto-close --pulsate --text="Download ed installazione delle librerie e dei compilatori" --title="$title_star" if [ `echo ${PIPESTATUS[*]} | cut -d " " -f 2` -eq 0 ] then Start else Error100 fi } function Install { DownSvn "CO" | zenity --text-info --width 700 --height 400 --title="$title Download.." Compile | zenity --progress --title="$title" --text="Build and Install" cat << .end > $HOME/stardict.desktop [Desktop Entry] Name=Stardict GenericName=Stardict Comment=Dictionary Exec=stardict StartupNotify=false Icon=/usr/share/stardict/pixmaps/docklet_normal.png Terminal=false Type=Application Categories=Application;Utility .end echo "$pass" | sudo -S mv $HOME/stardict.desktop /usr/share/applications/ cat << .end > $HOME/stardict.desktop [Desktop Entry] Version=1.0 Encoding=UTF-8 Name=Stardict Type=Application Name[it_IT]=Stardict Comment[it_IT]=Dizionario Comment=Dizionario Exec=stardict -h X-GNOME-Autostart-enabled=true GenericName[it_IT]= .end echo $pass | sudo -S mv $HOME/stardict.desktop $HOME/.config/autostart/ zenity --info --title="$title" --text="Installazione completata!" Start } function Update { namedir=`cat $HOME/.nude/dirprog | grep "$name_prog" | cut -d" " -f 2` #Prende la Revisione SVN remota touch $HOME/.nude/svn/stardict_version touch $HOME/.status.txt echo "p" | svn info http://stardictproject.googlecode.com/svn/trunk/ 2> $log_svn | grep Revisione: > $HOME/.nude/svn/star_version if [ `echo ${PIPESTATUS[*]} | cut -d " " -f 2` -ne 0 ] then Error103 fi sed -i 's/Revisione: //g' $HOME/.nude/svn/star_version #Prende la Revisione SVN locale svn info $namedir/$name_prog | grep Revisione: > $HOME/.status.txt sed -i 's/Revisione: //g' $HOME/.status.txt revremote=` sed -n '1p' $HOME/.nude/svn/star_version` revlocale=` sed -n '1p' $HOME/.status.txt` if [ "$revremote" == "$revlocale" ] then zenity --info --text="Non ci sono aggiornamenti!" Start else choose=`zenity --title="$title" --text="Ci sono nuovi aggiornamenti, vuoi procedere?" --list --column="Scegli" Yes No` if [ `echo ${PIPESTATUS[*]} | cut -d " " -f 1` -ne 0 ] then Start exit fi case "$choose" in "Si") DownSvn "UP" | zenity --text-info --title="$title" --width 700 --height 400 #echo "p" | svn up $namedir/$name_prog 2> $log_svn | zenity --text-info --width=400 --height=400 --title="$title_star Aggiorna" Compile | zenity --progress --title="$title" --text="Build and Install" Start ;; "No") Start esac fi } function Compile { cd $namedir/$name_prog echo "15" ./autogen.sh --disable-gucharmap 2> $log_install if [ `echo ${PIPESTATUS[*]} | cut -d " " -f 1` -ne 0 ] then MessageLog fi echo "33" ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --disable-gnome-support --disable-schemas-install --disable-festival --disable-gucharmap 2> $log_install if [ `echo ${PIPESTATUS[*]} | cut -d " " -f 1` -ne 0 ] then MessageLog fi echo "66" make 2> $log_install if [ `echo ${PIPESTATUS[*]} | cut -d " " -f 1` -ne 0 ] then MessageLog fi echo "99" echo "$pass" | sudo make install 2> $log_install if [ `echo ${PIPESTATUS[*]} | cut -d " " -f 2` -ne 0 ] then MessageLog fi } function CaseDict { choose=`zenity --height=350 --width=400 --title="$title Installazione dizionari" --text="Selezionare il dizionario" --list --column="Nome" "Inglese-Italiano v.1" "173989" "Babylon Inglese" "161889" "Babylon Inglese-Italiano" "142077" "Italiano-Tedesco" "135939" "Babylon Italiano-Inglese" "74054" "Francese-Italiano" "34757" "Portoghese-Italiano" "30045" "Zanichelli Italiano" "28321" "Italiano-Portoghese" "25206" "Italiano-Spagnolo" "22855" "Glossario Francese-Italiano" "21852" "Tedesco-Italiano" "19593" "Zanichelli:Sinonimi e contrari" "18709" "Zanichelli:Italiano-Inglese" "16205" "Zanichelli:Inglese-Italiano" "15986" "Italiano-Russo" "10226" "Italiano-Finlandese" "9911" "Italiano-Svedese" "7392" "Svedese-Italiano" "6489" "Spagnolo-Italiano" "5985" "Finlandese-Italiano" "5766" "Treccani:Sinonimi" "4612" "Glossario Internet e Informatica" "1771" "Nomi propri di persona" "880" "Proverbi italiani" "496" "Tavola periodica degli elementi" "221" --column="Lemmi"` if [ `echo ${PIPESTATUS[*]} | cut -d " " -f 1` -ne 0 ] then Start exit fi case "$choose" in "Inglese-Italiano v.1") dict="eng-ita-1" Dictionaries ;; "Babylon Inglese") dict="eng" Dictionaries ;; "Babylon Inglese-Italiano") dict="eng-ita_bab" Dictionaries ;; "Italiano-Tedesco") dict="ita-ted" Dictionaries ;; "Babylon Italiano-Inglese") dict="ita-eng" Dictionaries ;; "Francese-Italiano") dict="fra-ita" Dictionaries ;; "Portoghese-Italiano") dict="por-ita" Dictionaries ;; "Zanichelli Italiano") dict="ita" Dictionaries ;; "Italiano-Portoghese") dict="ita-por" Dictionaries CaseDict ;; "Italiano-Spagnolo") dict="ita-esp" Dictionaries ;; "Glossario Francese-Italiano") dict="fra-ita_glo" Dictionaries ;; "Tedesco-Italiano") dict="ted-ita" Dictionaries ;; "Zanichelli:Sinonimi e contrari") dict="zan_sc" Dictionaries ;; "Zanichelli:Italiano-Inglese") dict="zan_ie" Dictionaries ;; "Zanichelli:Inglese-Italiano") dict="zan_ei" Dictionaries ;; "Italiano-Russo") dict="ita-rus" Dictionaries ;; "Italiano-Finlandese") dict="ita-fin" Dictionaries ;; "Italiano-Svedese") dict="ita-swe" Dictionaries ;; "Svedese-Italiano") dict="swe-ita" Dictionaries ;; "Spagnolo-Italiano") dict="esp-ita" Dictionaries ;; "Finlandese-Italiano") dict="fin-ita" Dictionaries ;; "Treccani:Sinonimi") dict="tre_sin" Dictionaries ;; "Glossario Internet e Informatica") dict="glo_ii" Dictionaries ;; "Nomi propri di persona") dict="nomi" Dictionaries ;; "Proverbi italiani") dict="prov" Dictionaries ;; "Tavola periodica degli elementi") dict="tav_per" Dictionaries ;; esac } function Dictionaries { echo "$pass" | wget -c -P $HOME/ http://ompolicy.altervista.org/ubuntu/dict/$dict.tar.gz 2>&1 | awk '{print $7} fflush();' | zenity --progress --text="Download dictionary.." --title="$title" & KillWget echo "$pass" | sudo -S tar zxvf $HOME/$dict.tar.gz -C /usr/share/stardict/dic/ | zenity --progress --auto-close --pulsate --text="Install dictionary.." --title="$title" if [ `echo ${PIPESTATUS[*]} | cut -d " " -f 2` -eq 0 ] then sudo rm $dict.tar.gz CaseDict else Error101 fi } function CaseUninstall { uninstall=`zenity --title="$title Uninstall" --text="Sei sicuro?" --list --column="Scegli" Si No` if [ `echo ${PIPESTATUS[*]} | cut -d " " -f 1` -ne 0 ] then Start exit fi case "$uninstall" in "Si") Uninstall | zenity --progress --text="Rimozione In Corso.." --title="$title" --auto-close ;; "No") Start ;; esac } function Uninstall { echo "20" namedir=`cat $HOME/.nude/dirprog | grep "$name_prog" | cut -d" " -f 2` cd $namedir/$name_prog echo "40" echo "$pass" | sudo -S make uninstall | zenity --progress --auto-close --pulsate --text="Uninstall.." --title="$title" echo "60" echo "$pass" | sudo -S rm -fr /usr/share/stardict /usr/share/applications/stardict.desktop $HOME/.config/autostart/stardict.desktop echo "80" sed -e "/^$name_prog\ .*/d" $HOME/.nude/dirprog > $HOME/tmp mv $HOME/tmp $HOME/.nude/dirprog echo "100" sleep 1 zenity --info --text="Rimozione completata!" --title="$title" } function Start { choose=`zenity --height=260 --width=300 --title="$title Menù principale" --text="Fai la tua scelta:" --list --column="" "Installa librerie" Installa "Installa dizionari" Aggiorna Rimuovi Esci ` case "$choose" in "Installa librerie") Password Dev ;; "Installa") Password ChooseDirectory ;; "Installa dizionari") Password CaseDict ;; "Aggiorna") ControllOther Password Update ;; "Rimuovi") ControllOther Password CaseUninstall ;; "Esci") sudo -k exit 0 ;; esac } #Controllo esecuzione script con sudo o da root if [ "$(id -u)" == "0" ]; then zenity --info --text="Lancia lo script senza SUDO!" --title=$title exit 1 fi if [ -d "$HOME/.nude" ]; then echo "" else mkdir $HOME/.nude mkdir $HOME/.nude/svn mkdir $HOME/.nude/log touch $HOME/.nude/control fi if [ -d "$HOME/.nude/log" ]; then echo "" else mkdir $HOME/.nude/log fi if [ -d "$HOME/.nude/svn" ]; then echo "" else mkdir $HOME/.nude/svn fi zenity --info --text="goStardict [by $author_ompo]\n\n Installazione facilitata per\n Stardict - Dizionario multilingua\n\n $email_ompo\n\n Versione: $ver_star" --title="$title Info" Start