source: zero-center/trunk/fuentes/install-files/usr/bin/zero-reinstall-list @ 2108

Last change on this file since 2108 was 2108, checked in by Juanma, 4 years ago

WIP on notifications and installation results

  • Property svn:executable set to *
File size: 4.5 KB
Line 
1#!/bin/bash
2export TEXTDOMAIN="zero-center"
3
4MSG_REVIEW1=$(gettext "Some packages aren\'t in your repositories, and they aren\'t installed, you can see it in")
5MSG_REVIEW2=$(gettext "Please review your repositories and reinstall it again .")
6MSG_CONTACT=$(gettext "If you can\'t resolve the problem please contact with Lliurex Team at http://mestreacasa.gva.es/web/lliurex/forums")
7MSG_REMOVED=$(gettext "Removed")
8MSG_FINISH_INSTALLED=$(gettext "has been INSTALLED in your system, and you can view the log in")
9MSG_FINISH_SYSTEM1=$(gettext "has been")
10MSG_FINISH_SYSTEM=$(gettext "in your system, and you can view the log in")
11
12
13
14#Variables :
15#Arg1: Ruta de la lista de paquetes
16#Arg2: Nombre del paquete para la info en zenity
17PACKAGE_LIST="$1"
18PACKAGE_NAME="$2"
19ZERO_LOG="/tmp/zero-installer.log"
20
21NAME_FILE=$(echo $PACKAGE_LIST | rev | cut -d "/" -f1 | rev)
22
23INSTALL_LOG="/tmp/zero-${NAME_FILE}.log"
24
25
26####FUNCIONES
27       
28        #Aqui listaremos las opciones del helper
29        function helper {
30               
31                if [ "$1" = "--help" ] || [ "$1" = "-h" ] || [ "$1" = "" ]; then
32                        echo
33                        echo "----ZERO-REINSTALL-LIST-HELPER----"
34                        echo
35                        echo "zero-reinstall-list <arg1>"
36                        echo
37                        echo "arg1: Is the name of the FILE with the names of the package, separates with EOF"
38                        echo
39                        echo "arg2: Is the name of the zenity info with resume, is optional"
40                        echo 
41                        echo "example: zero-reinstall-list LIST example"
42                        echo
43                        echo "LIST is a file with:"
44                        echo
45                        echo "hotpotatoes"
46                        echo "openssh-server"
47                        echo "sl"
48                        echo
49                        exit 0
50                fi
51        }
52
53        #FUNCION QUE TESTEA SI UN PAQUETE ESTA INSTALADO, BORRANDOLO EN CASO AFIRMATIVO
54        function test_install {
55                #Testeamos si el paquete esta instalado, no haciendo nada en el caso afirmativo o instalandolo en el caso negativo.
56                TEST=$( dpkg-query -s $1 2> /dev/null| grep Status | cut -d " " -f 4 )
57                if [ "$TEST" = 'installed' ]; then
58                        echo " " >> $INSTALL_LOG
59                        echo " ----------Zero-Test-Uninstall------------" >> $INSTALL_LOG
60                        echo " " >> $INSTALL_LOG
61                        echo "Package $1 already installed, we have to uninstall it" >> $INSTALL_LOG
62                        echo "Package $1 already installed, we have to uninstall it"
63                        zero-installer remove $1
64                        cat $ZERO_LOG >> $INSTALL_LOG
65                else
66                        echo " " >> $INSTALL_LOG
67                        echo " ----------Zero-Test-Uninstall------------" >> $INSTALL_LOG
68                        echo " " >> $INSTALL_LOG
69                        echo "Package $1 is not installed, do nothing" >> $INSTALL_LOG
70                        echo "Package $1 is not installed, do nothing"
71                fi
72
73        }
74       
75
76################MAIN######################
77
78#Log para el zero-center
79if [ -f "$INSTALL_LOG" ]; then
80        rm  "$INSTALL_LOG"
81fi
82
83touch "$INSTALL_LOG"
84
85#COMPROBAMOS QUE NO ES LA AYUDA
86helper $1
87
88#CREAMOS UNA LISTA CON LOS PROGRAMAS NECESARIOS Y LOS TESTEAMOS SI ESTAN INSTALADOS
89LISTA=( $( cat $PACKAGE_LIST | awk '{print $1}' ) )
90echo "The package list is....."
91echo ${LISTA[@]}
92        for i in "${LISTA[@]}"; do
93                echo "Now test_install $i"
94                #Testeamos si el paquete esta instalado y si es asi lo borramos
95                test_install $i
96                #Me guardo el fichero de los logs por si algo fallase o para revisarlo
97                cat $ZERO_LOG >> $INSTALL_LOG
98               
99        done
100
101##YA SABEMOS QUE  EL PROGRAMA ESTA DESINSTALADO, VAMOS A INSTALARLO
102##LO HACEMOS ASI Y NO TODO DEL TIRON PORQUE SINO PUEDE SER QUE ALGUNA DEPENDENCIA QUE SE ARRASTRE FALLE
103        for i in "${LISTA[@]}"; do             
104                echo " " >> $INSTALL_LOG
105                echo "Zero-installer install the package $i" >> $INSTALL_LOG
106                echo "Zero-installer install the package $i"
107                zero-installer install $i
108                #Get zero-installer exit status
109                ERROR=$?
110                #Me guardo el fichero de los logs por si algo fallase o para revisarlo
111                cat $ZERO_LOG >> $INSTALL_LOG
112        done
113
114#Ponemos el nombre si no fue especificado en la llamada al comando     
115if [ "$PACKAGE_NAME" == " " ]; then
116        PACKAGE_NAME=$(echo "$PACKAGE_LIST" | rev | cut -d "/" -f1 | rev)
117fi
118
119#COMPROBAMOS QUE LA LISTA SE INSTALO BIEN
120echo "--------PACKAGE NOT IN REPOSITORIES--------- " >> $INSTALL_LOG
121for i in "${LISTA[@]}"; do
122        TEST=$( dpkg-query -s $i 2> /dev/null| grep Status | cut -d " " -f 4 )
123       
124        if [ "$TEST" != 'installed' ]; then
125                echo "$i is not in repository" >> $INSTALL_LOG
126        fi
127
128done
129
130fgrep "is not in repository" "$INSTALL_LOG" 
131if  [ "$?" == "0" -o "$ERROR" -gt 0 ]; then
132        zenity --info --title="Zero-reinstaller" --text="$MSG_REVIEW1 $INSTALL_LOG. $MSG_REVIEW2 .$MSG_CONTACT" > /dev/null 2>&1 &
133        exit 1
134else
135        zenity --info --title="Zero-reinstaller" --text="$PACKAGE_NAME $MSG_FINISH_INSTALLED $INSTALL_LOG" > /dev/null 2>&1 &
136fi
137
138exit 0
Note: See TracBrowser for help on using the repository browser.