Added upgrade feature
root

root commited on 2011-02-10 12:16:06
Showing 1 changed files, with 123 additions and 3 deletions.

... ...
@@ -12,17 +12,22 @@ SLEEP_ON_FAILED=10
12 12
 CHECK_URL=http://www.roundcube.net/download
13 13
 DOWNLOAD=0
14 14
 DOWNLOAD_DIR=$RC_HOME/../upstream
15
+OWNER=root
16
+GROUP=www-data
15 17
 
16 18
 DEBUG=0
19
+UPGRADE=0
20
+EXTRACT=0
17 21
 
18 22
 function usage() {
19
-	echo "Usage : $0 [-v] [-d]"
23
+	echo "Usage : $0 [-v] [-d] [-u]"
20 24
 	echo "  -v   Verbose mode"
21 25
 	echo "  -d   Download new release"
26
+	echo "  -u   Upgrade installation"
22 27
 	echo "  -h   Display this help"
23 28
 }
24 29
 
25
-while getopts ":dvh" opt; do
30
+while getopts ":dvhu" opt; do
26 31
 	case $opt in
27 32
 		v)
28 33
 			DEBUG=1
... ...
@@ -30,6 +35,12 @@ while getopts ":dvh" opt; do
30 35
 		d)
31 36
 			DOWNLOAD=1
32 37
 		;;
38
+		u)
39
+			DOWNLOAD=1
40
+			UPGRADE=1
41
+			DEBUG=1
42
+			EXTRACT=1
43
+		;;
33 44
 		h)
34 45
 			usage
35 46
 			exit 0
... ...
@@ -110,11 +121,118 @@ then
110 121
 			cd "$DOWNLOAD_DIR"
111 122
 			DOWNLOAD_FILE="$( pwd )/roundcubemail-$newest.tar.gz"
112 123
 			[ $DEBUG -eq 1 ] && echo "Download new release in $DOWNLOAD_FILE"
113
-			wget -q -O "$DOWNLOAD_FILE" "$DOWNLOAD_URL"
124
+			#wget -q -O "$DOWNLOAD_FILE" "$DOWNLOAD_URL"
125
+			if [ $EXTRACT -eq 1 ]
126
+			then
127
+				[ $DEBUG -eq 1 ] && echo "Extract new release"
128
+				tar xzf $DOWNLOAD_FILE
129
+			fi
114 130
 		else
115 131
 			echo "[WARNING] Le dossier de telechargement n'existe pas ($DOWNLOAD_DIR)."
132
+			[ $UPGRADE -eq 1 ] && exit 1
133
+		fi
134
+	fi
135
+
136
+	if [ $UPGRADE -eq 1 ]
137
+	then
138
+		cd "$DOWNLOAD_DIR"
139
+		default_src="$( pwd )/roundcubemail-$newest"
140
+		src=""
141
+		while [ ! -n "$src" ]
142
+		do 
143
+			echo -n "Source de la nouvelle version [$default_src] : "
144
+			read a
145
+			if [ -n "$a" ]
146
+			then
147
+				src="$a"
148
+			else
149
+				src="$default_src"
150
+			fi
151
+			if [ ! -d "$src" ]
152
+			then
153
+				echo -n "[WARNING] Le dossier $src n'existe pas."
154
+				[ ! -n "$a" ] && default_src=""
155
+			fi
156
+		done
157
+		echo "Source : $src"
158
+
159
+		cd "$RC_HOME/../"
160
+		from=""
161
+		while [ ! -n "$from" ]
162
+		do 
163
+			echo -n "Installation source [$RC_HOME] : "
164
+			read a
165
+			if [ -n "$a" ]
166
+			then
167
+				if [ -d "$a" ]
168
+				then
169
+					from="$a"
170
+				else
171
+					echo "[ERROR] $a n'est pas un dossier valide"
172
+				fi
173
+			else
174
+				from="$RC_HOME"
175
+			fi	
176
+		done
177
+		echo "From : $from"
178
+		default_to="$( pwd )/roundcubemail-$newest"
179
+		to=""
180
+		while [ ! -n "$to" ]
181
+		do
182
+			echo -n "Destination de la nouvelle installation [$default_to] : "
183
+			read a
184
+			if [ -n "$a" ]
185
+			then
186
+				to="$a"
187
+			else
188
+				to="$default_to"
189
+			fi
190
+			if [ -d "$to" ]
191
+			then
192
+				echo -n "[WARNING] Le dossier $to existe deja. Celui-ci va etre deplace dans $to.old. Confirmez-vous votre choix [Y/n] ? "
193
+				read b
194
+				if [ "$b" == "n" -o "$b" == "N" ]
195
+				then
196
+					to=""
197
+					[ ! -n "$a" ] && default_to=""
198
+				else
199
+					echo "Deplace $to dans $to.old"
200
+					mv "$to" "$to.old"
201
+				fi
202
+			fi
203
+		done
204
+		echo "To : $to"
205
+		echo "Copie de $from dans $to"
206
+		rsync -a --copy-dirlinks "$from/" "$to/"
207
+
208
+		echo "Mise a jour de l'installation $to a partir de $src : "
209
+		for file in index.php bin/ SQL/ program/ installer/ skins/default/ plugins/
210
+		do
211
+			echo "  - Mise a jour de $file"
212
+			rsync -a --delete $src/$file $to/$file
213
+			chown $OWNER:$GROUP -R $to/$file
214
+		done
215
+
216
+		cd "$to"
217
+		if [ -x "bin/update.sh" ]
218
+		then
219
+			echo "Lancement de l'utilitaire de verification de mise a jour"
220
+			./bin/update.sh
221
+		fi
222
+
223
+		if [ -L "$RC_HOME" ]
224
+		then
225
+			echo -n "Voulez-vous faire pointer le lien symbolique $RC_HOME vers cette nouvelle installation [Y/n] ? "
226
+			read a
227
+			if [ "$a" != "n" -a "$a" != "N" ]
228
+			then
229
+				echo "  - Suppression de l'actuel lien $RC_HOME"
230
+				rm -f $RC_HOME
231
+				echo "  - Creation du nouveau lien $RC_HOME vers $to"
232
+				ln -s "$to" "$RC_HOME"
116 233
 			fi
117 234
 		fi
235
+	else 
118 236
 	
119 237
 		tmp=`mktemp`
120 238
 		echo "New RoundCude release" > $tmp
... ...
@@ -157,6 +275,8 @@ then
157 275
 			[ $DEBUG -eq 1 ] && echo "Mail envoyé"
158 276
 		fi
159 277
 		rm -f $tmp
278
+
279
+	fi
160 280
 else
161 281
 	[ $DEBUG -eq 1 ] && echo "Pas de changement de version"
162 282
 fi
163 283