Blame view

install/update.sh 3.89 KB
ed60c45e   Etienne Pallier   Nouveau script in...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash

# ----------------------------------------------------------------------------------------------------------------
# Ce script permet de mettre à jour automatiquement le code source du logiciel, ainsi que la BD (si besoin).
# C'est une bonne pratique de l'exécuter assez régulièrement pour garder un logiciel bien à jour.

# Il ne fait essentiellement qu'un "git pull" suivi de la mise à jour de la BD (si besoin).

# La BD est mise à jour SEULEMENT s'il existe au moins 1 NOUVEAU script de mise à jour db-update-YYYY-MM-DD.sh
# récupéré avec git pull (dans le dossier database/update/).
# S'il y en a plusieurs, ils sont exécutés dans l'ordre chronologique.
# ----------------------------------------------------------------------------------------------------------------

# (Bash Arrays : cf https://www.cyberciti.biz/faq/finding-bash-shell-array-length-elements/)

0cb205fe   Etienne Pallier   bugfix and improv...
16
TEST=0
ed60c45e   Etienne Pallier   Nouveau script in...
17
18
19
20
21
22

db_update_scripts_folder="../database/update"
db_update_scripts_folder_tmp=/tmp/database_update

function abort() {
	echo "******************************************************"
0cb205fe   Etienne Pallier   bugfix and improv...
23
	echo "!!! Script $0 aborté à cause d'une erreur d'exécution !!!"	
ed60c45e   Etienne Pallier   Nouveau script in...
24
25
26
27
28
29
	echo "******************************************************"
	exit 1
}

# TEST only
[[ $TEST == 1 ]] && (rm ../database/update/test.txt ; rm ../database/update/db-update-2017-08-24.sh ; rm ../database/update/db-update-2017-08-25.sh)
0cb205fe   Etienne Pallier   bugfix and improv...
30
#mv ../database/update/db-update-2019-01-12.sh /tmp/ 
ed60c45e   Etienne Pallier   Nouveau script in...
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58



# 0) Sauvegarde de l'état actuel du dossier database/update/ (dans /tmp)
#db_update_scripts_before=( "key1" "key2" "key3" "key4" "key5" "key6" "key7" "key8" "key9" "key10" )
rm -rf $db_update_scripts_folder_tmp/ || abort
mkdir $db_update_scripts_folder_tmp/ || abort
cp -fp $db_update_scripts_folder/db-update-????-??-??.sh $db_update_scripts_folder_tmp/ || abort
cd $db_update_scripts_folder_tmp/ || abort
db_update_scripts_before=$(ls -1 db-update-????-??-??.sh) || abort
cd - >/dev/null || abort
#echo ; echo ${db_update_scripts_before[@]}



# 1) Mise à jour du code source (git pull)
#db_update_scripts_after=( "key1" "key2" "key3" "key4" "key5" "key6" "key7" "key8" "key9" "key10" "key0" "key11" )
echo
echo "* Mise à jour du code source (git pull) (o/n) ? [o]"
read do_it ; [[ -z $do_it ]] && do_it="o" ; echo $do_it
[[ $do_it != "o" ]] && exit 0

cd ../ || abort
git pull || abort
cd - >/dev/null || abort

# TEST only
[[ $TEST == 1 ]] && (touch ../database/update/test.txt ; touch ../database/update/db-update-2017-08-24.sh ; touch ../database/update/db-update-2017-08-25.sh)
0cb205fe   Etienne Pallier   bugfix and improv...
59
#mv /tmp/db-update-2019-01-12.sh ../database/update/
ed60c45e   Etienne Pallier   Nouveau script in...
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95

cd $db_update_scripts_folder/ || abort 
db_update_scripts_after=$(ls -1 db-update-????-??-??.sh) || abort
cd - >/dev/null || abort
#echo ; echo ${db_update_scripts_after[@]}
echo "=> Fait"



# 2) (Optionnel) Mise a jour de la BD (seulement s'il y a au moins 1 nouveau script db-update-YYYY-MM-DD.sh dans database/update/)
db_update_scripts_new=$( echo ${db_update_scripts_before[@]} ${db_update_scripts_after[@]} | tr ' ' '\n' | sort | uniq -u ) || abort
#temp=() ; for t in ${db_update_scripts_new[@]} ; do temp+=($t) ; done ; temp+=('toto') ; db_update_scripts_new=$temp
#echo ${#db_update_scripts_new[@]} ; echo ${db_update_scripts_new[@]}
# Pas de nouveau script de mise à jour BD à exécuter => exit
[[ $db_update_scripts_new == '' ]] && exit 0
#nb_scripts=${#db_update_scripts_new[@]}
#[[ $nb_scripts == 0 ]] && exit 0

echo
echo "* Mise à jour de la Base de Données :"
echo "Voici le(s) script(s) à exécuter :" 
echo ${db_update_scripts_new[@]}
cd $db_update_scripts_folder/ || abort
for db_update_script_new in ${db_update_scripts_new[@]} ; do
	echo ; echo
	echo "- Execution du script de mise à jour de la BD $db_update_scripts_folder/$db_update_script_new (o/n) ? [o]"
	read do_it ; [[ -z $do_it ]] && do_it="o" ; echo $do_it
	if [[ $do_it == "o" ]] ; then
		#ls -l ./$db_update_script_new_ || abort
		./$db_update_script_new || abort
	fi
done
cd - >/dev/null

echo
echo "=> Fait"