source: zero-center/trunk/fuentes/install-files/usr/bin/zero-installer @ 5381

Last change on this file since 5381 was 5381, checked in by Juanma, 3 years ago

Improved translations

  • Property svn:executable set to *
File size: 12.3 KB
Line 
1#!/bin/bash
2
3export TEXTDOMAIN="zero-center"
4
5MSG_INSTALLING=$(gettext "Installing")
6MSG_INSTALLED=$(gettext "Installed")
7MSG_REMOVING=$(gettext "Removing")
8MSG_REMOVED=$(gettext "Removed")
9MSG_FINISH_INSTALLED=$(gettext "has been INSTALLED in your system, and you can view the log in")
10MSG_FINISH_UNINSTALLED=$(gettext "has NOT been INSTALLED in your system, and you can view the log in")
11MSG_FINISH_SYSTEM1=$(gettext "has been")
12MSG_FINISH_ERROR=$(gettext "has NOT been")
13MSG_FINISH_SYSTEM=$(gettext "in your system, and you can view the log in")
14
15
16
17
18        function helper {
19                #Aqui listaremos las opciones del helper
20                if [ $1 = "--help" ] || [ $1 = "-h" ] || [ "$1" = "" ]; then
21                        echo
22                        echo "----ZERO-INSTALLER-HELPER----"
23                        echo
24                        echo "zero-installer <arg1> <arg2>"
25                        echo
26                        echo "arg1: Is the option to the package, install or remove"
27                        echo "arg2: Is the package"
28                        echo "arg3: -d option, indicate if you want install the package with dpkg"
29                        echo
30                        echo "example: zero-installer install hotpotatoes"
31                        echo
32                        echo "--------------------------------------------"
33                        echo
34                        echo "You can install deb packages with dpkg"
35                        echo "if you define argument 1 like -d"
36                        echo
37                        echo "example 2: zero-installer -d /tmp/google.deb"
38                        echo
39                        echo "--------------------------------------------"
40                        echo
41                        echo "You can define package list in a file with 2 arguments, for apt"
42                        echo 
43                        echo  "<arg1> <arg2>"
44                        echo
45                        echo "<arg1> The name of package"
46                        echo "<arg> Instruction for package, install or remove"
47                        echo
48                        echo "zero-installer -l example.txt"
49                        echo
50                        exit 0
51                fi
52        }
53       
54       
55       
56        function main {
57               
58               
59                if [ "$1" == "-d" ]; then
60                       
61                        touch /tmp/zero-install.log
62                        NAME_PACK=$(echo $2 | rev | cut -d "/" -f1 | rev)                       
63                        #En segundo plano realizaremos la instalacion del paquete almacenando su salida en nuestro log, eliminando nuestro fichero ayuda para salir del bucle.
64                        #TEST=`(dpkg -i $2 >> /tmp/zero-installer.log ; echo $?; rm /tmp/zero-install.log) &`
65                        tmpfile=$(mktemp)
66                        `(dpkg -i $2 >> /tmp/zero-installer.log ; echo $?; rm /tmp/zero-install.log)>$tmpfile `&
67
68                        echo " " >> /tmp/zero-installer.log
69                        echo "Zero-center-------Your instruction is----------dpkg -i $2" >> /tmp/zero-installer.log
70                        echo "................................................................................." >> /tmp/zero-installer.log
71
72                        #Mientras que el fichero de ayuda existe es que estamos instalando
73                        #Cuando ya no exista saldremos del while
74                                while [ -f  "/tmp/zero-install.log" ]; do
75                                        #En la variable PERCENT almacenamos el tanto por cien que llevamos de descarga
76                                        #accediento a la ultima linea escrita en el fichero de ayuda y seleccionando solo el dato que necesitamos.
77                                        VAR=$( tail -1 /tmp/zero-installer.log  2>/dev/null )
78                                        #Hacemos echo de los datos que necesita el zenity
79                                        echo "#$MSG_INSTALLING $2.......$VAR" | cut -c1-85
80                                        #por ultimo entubamos la salida al zenity progress para que nos muestre el resultado en pantalla
81                                done | zenity --progress  --auto-close --pulsate --width 500 --title="Zero-Center-Installer" --no-cancel > /dev/null 2>&1
82                        echo "................................................................................." >> /tmp/zero-installer.log
83                        #if [ $TEST -eq 0 ]
84                        if [ `cat $tmpfile` -eq 0 ]
85       
86                        then
87                                echo "Zero-center-------Your package $NAME_PACK has been INSTALLED in your system"
88                                echo " " >> /tmp/zero-installer.log
89                                echo "Zero-center-------Your package $NAME_PACK has been INSTALLED in your system" >> /tmp/zero-installer.log
90                                echo "________________________________________________________________________________" >> /tmp/zero-installer.log
91                                echo " " >> /tmp/zero-installer.log
92                                su -c "notify-send -t 5000 -u normal -i /usr/share/icons/lliurex-neu/scalable/apps/zero-center.svg 'Zero-Installer' '$NAME_PACK $MSG_FINISH_INSTALLED /tmp/zero-installer.log'" $USER
93                                exit 0
94                        else
95                                echo "Zero-center-------Your package $NAME_PACK has NOT been INSTALLED in your system"
96                                echo " " >> /tmp/zero-installer.log
97                                echo "Zero-center-------Your package $NAME_PACK has NOT been INSTALLED in your system" >> /tmp/zero-installer.log
98                                echo "________________________________________________________________________________" >> /tmp/zero-installer.log
99                                echo " " >> /tmp/zero-installer.log
100                                su -c "notify-send -t 5000 -u normal -i /usr/share/icons/lliurex-neu/scalable/apps/zero-center.svg 'Zero-Installer' '$NAME_PACK $MSG_FINISH_UNINSTALLED /tmp/zero-installer.log'" $USER
101                                exit 1
102                        fi
103                        rm $tmpfile 2>/dev/null
104                else
105                        #Creamos un fichero que nos servirá de ayuda para escribir y leer el tanto por cien del fichero descargado
106                        touch /tmp/zero-install.log
107                       
108                        INSTRUCCION=$1
109                       
110                        if [ "$INSTRUCCION" = "deinstall" ];then
111                                INSTRUCCION="remove"
112                        fi
113                       
114                        #En segundo plano realizaremos la instalacion del paquete almacenando su salida en nuestro log, eliminando nuestro fichero ayuda para salir del bucle.
115                        #TEST=`(apt-get $INSTRUCCION -y --allow-unauthenticated $2 >> /tmp/zero-installer.log ; echo $?;rm /tmp/zero-install.log) &`
116                        tmpfile=$(mktemp)
117                        `(apt-get $INSTRUCCION -y --allow-unauthenticated $2 >> /tmp/zero-installer.log ; echo $?;rm /tmp/zero-install.log)>$tmpfile`&
118
119                        echo "................................................................................." >> /tmp/zero-installer.log
120                        echo " " >> /tmp/zero-installer.log
121                        echo "Zero-center-------Your instruction is----------apt-get $INSTRUCCION -y --allow-unauthenticated $2" >> /tmp/zero-installer.log
122                        echo "................................................................................." >> /tmp/zero-installer.log
123
124                        #Mientras que el fichero de ayuda existe es que estamos instalando
125                        #Cuando ya no exista saldremos del while
126                                while [ -f  "/tmp/zero-install.log" ]; do
127                                        #En la variable PERCENT almacenamos el tanto por cien que llevamos de descarga
128                                        #accediento a la ultima linea escrita en el fichero de ayuda y seleccionando solo el dato que necesitamos.
129                                        VAR=$( tail -1 /tmp/zero-installer.log  2>/dev/null )
130                                        #Hacemos echo de los datos que necesita el zenity
131                                        echo "#$ACTION $2.......$VAR" | cut -c1-85
132                                        #por ultimo entubamos la salida al zenity progress para que nos muestre el resultado en pantalla
133                                done | zenity --progress  --auto-close --pulsate --width 500 --title="Zero-Center-Installer" --no-cancel > /dev/null 2>&1
134                        #if [ $TEST -eq 0 ]
135                        if [ `cat $tmpfile` -eq 0 ]
136                        then                   
137                                echo "Zero-center-------Your package $2 has been $FINISHED in your system"
138                                echo " " >> /tmp/zero-installer.log
139                                echo "Zero-center-------Your package $2 has been $FINISHED in your system" >> /tmp/zero-installer.log
140                                echo "________________________________________________________________________________" >> /tmp/zero-installer.log
141                                echo " " >> /tmp/zero-installer.log
142                                su -c "notify-send -t 5000 -u normal -i /usr/share/icons/lliurex-neu/scalable/apps/zero-center.svg 'Zero-Installer' '$2 $MSG_FINISH_SYSTEM1 $FINISHED $MSG_FINISH_SYSTEM /tmp/zero-installer.log'" $USER
143                        else
144                                echo "Zero-center-------Your package $2 has NOT been $FINISHED in your system"
145                                echo " " >> /tmp/zero-installer.log
146                                echo "Zero-center-------Your package $2 has NOT been $FINISHED in your system" >> /tmp/zero-installer.log
147                                echo "________________________________________________________________________________" >> /tmp/zero-installer.log
148                                echo " " >> /tmp/zero-installer.log
149                                su -c "notify-send -t 5000 -u normal -i /usr/share/icons/lliurex-neu/scalable/apps/zero-center.svg 'Zero-Installer' '$2 $MSG_FINISH_ERROR $FINISHED $MSG_FINISH_SYSTEM /tmp/zero-installer.log'" $USER
150                                exit 1
151                        fi
152                        rm $tmpfile 2>/dev/null
153                fi
154                }
155       
156       
157       
158        function check_removed {
159               
160                #Testeamos si el paquete esta instalado, no haciendo nada en el caso afirmativo o instalandolo en el caso negativo.
161                TEST=$( dpkg-query -s $2 2> /dev/null| grep Status | cut -d " " -f 4 )
162                if [ "$TEST" = 'installed' ]; then
163                        echo "Package $2 already installed, do nothing"
164                        echo "Package $2 already installed, do nothing" >> /tmp/zero-installer.log
165                        echo "________________________________________________________________________________" >> /tmp/zero-installer.log
166                        echo " " >> /tmp/zero-installer.log
167                else
168                        main $1 $2                     
169                fi
170               
171        }
172       
173        function check_install {
174               
175                #Testeamos si el paquete esta quitado, no haciendo nada en el caso afirmativo o desinstalandolo en el caso negativo
176                TEST=$( dpkg-query -s $2 2> /dev/null| grep Status | cut -d " " -f 4 )
177                if [ "$TEST" != 'installed' ]; then
178                        echo "Package $2 already removed, do nothing"
179                        echo "Package $2 already removed, do nothing" >> /tmp/zero-installer.log
180                        echo "________________________________________________________________________________" >> /tmp/zero-installer.log
181                        echo " " >> /tmp/zero-installer.log
182                else
183                        main $1 $2     
184                fi
185       
186               
187        }
188       
189        function check_package {
190               
191                if [ $1 = "install" ] ; then
192                        ACTION="$MSG_INSTALLING"
193                        FINISHED="$MSG_INSTALLED"
194                        check_removed $1 $2
195                        apt-get update
196                else
197                        ACTION="$MSG_REMOVING"
198                        FINISHED="$MSG_REMOVED"
199                        check_install $1 $2
200                fi
201        }
202       
203       
204        function check_parameters {
205             
206                #En esta funcion testeamos los parametros para que ambos sean coherentes
207                #Testeamos que el primer parámetro sea uno de los permitidos
208                if [ "$1" != "install" -a "$1" != "remove"  -a "$1" != "deinstall" ] ;then
209                        echo "You define a wrong action for your package, please check it. Now abort zero-installer command" >> /tmp/zero-installer.log
210                        helper -h
211                fi
212                #Testeamos el segundo parametro comprobando que existe en el repositorio, sino abortamos la instruccion.
213                LANG=en apt-cache show $2 | grep -i Version
214                if [ "$?" != "0" ]; then
215                        msg=$"Impossible to install $2, it dont exists in your repositories, abort zero-installer command"
216                        su -c "notify-send -t 5000 -u normal -i /usr/share/icons/lliurex-neu/scalable/apps/zero-center.svg 'Zero-Installer' \"${msg}\"" $USER
217                        echo "Your package $2 don't exists in your repositories, abort zero-installer command"
218                        echo "Your package $2 don't exists in your repositories, abort zero-installer command" >> /tmp/zero-installer.log
219                        #su -c "notify-send -t 5000 -u normal -i /usr/share/icons/lliurex-neu/scalable/apps/zero-center.svg 'Zero-Installer' 'Your package $2 DO NOT EXISTS in your repositories, abort zero-installer command, and you can view the log in /tmp/zero-installer.log. If you cannot resolve the problem please contact with Lliurex Team at http://mestreacasa.gva.es/web/lliurex/forums'" $USER
220                        exit 1
221                fi
222        }
223       
224       
225        function check_list {
226       
227                #Testeamos si el tercer parametro nos indica dpkg y lo lanzamos ya
228                if [ "$1" == "-d" ]; then
229                        main "$1" "$2"
230                fi
231               
232                #Compruebo que es una lista y si lo es la recorro linea a linea
233                if [ "$1" = "-l"  ]; then
234                        oldIFS=$IFS     # conserva el separador de campo
235                        IFS=$'\n'
236                        for line in $(cat $2); do
237                                #En cada linea obtengo el paquete y la instruccion a realizar
238                                PACKAGE=$( echo "$line" | awk '1 { print  $1 }' )
239                                INSTRUCTION=$( echo "$line" | awk '1 { print  $2 }' )
240                                echo "You want $INSTRUCTION from your system this package, $PACKAGE"
241                                echo "You want $INSTRUCTION from your system this package, $PACKAGE" >> /tmp/zero-installer.log
242                                check_parameters $INSTRUCTION $PACKAGE
243                                check_package $INSTRUCTION $PACKAGE
244                        done
245                        IFS=$old_IFS
246                        exit 0
247                fi                     
248        }
249       
250       
251###################PROGRAMA PRINCIPAL#######################
252
253#Log para el zero-center
254if [ -f /tmp/zero-installer.log ]; then
255        rm  /tmp/zero-installer.log
256fi
257
258echo " " >> /tmp/zero-installer.log
259echo "------Zero-Installer-Resume--------" >> /tmp/zero-installer.log
260echo "" >> /tmp/zero-installer.log
261echo "If you detect any problem please contact with Lliurex Team lliurex@lliurex.net" >> /tmp/zero-installer.log
262echo "Or submit it in http://mestreacasa.gva.es/web/lliurex/forums" >> /tmp/zero-installer.log
263echo "" >> /tmp/zero-installer.log
264
265#Dentro del programa principal lo primero que hago es mirar si es una lista     
266check_list $1 $2
267#Chequeo si los parametros son correctos
268check_parameters $1 $2
269#Chequeo si el paquete esta instalado o quitado y hago lo que se me pide, si no esta hecho de antes.
270check_package $1 $2
271
272exit 0
273
274
Note: See TracBrowser for help on using the repository browser.