db-update.sh
3.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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
59
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#!/bin/bash
# Si execution directe depuis le repertoire data/ (bind du repertoire docker)
# => on rappelle ce meme script avec le CLI docker puis on exit
[ -f ../../../docker-compose.yml ] && docker exec -it -w /var/www/database/update labinvent $0 $1
[ -f ../../../docker-compose.yml ] && exit
# Execution SANS docker, ou bien AVEC docker depuis le conteneur
echo "IN $(pwd)"
# Pour Mac OS recent (>=10.10, Yosemite), la syntaxe du SED est differente
# Il faut donc exécuter ce script de la manière suivante :
# ./macos-db-update.sh <ce_script.sh> db-update-AAAA-MM-JJ.sql
# Mode DEBUG (=1 pour activer)
DEBUG=0
#DEBUG=1
# Mac ou Linux ?
# Mac
#MACOS=1
# Linux
MACOS=0
if [ ! -f ../../config/app.php ] ; then
echo "Vous devez executer ce script depuis le dossier database/update/"
exit 1
fi
# Ce script attend un argument $1 qui est le nom du script sql à exécuter
# Exit if no argument
[[ $1 == '' ]] && exit 1
sqlscript=$1
#echo $sqlscript
function abort() {
echo "******************************************************"
echo "!!! Script $0 aborté à cause d'une erreur d'exécution !!!"
echo "******************************************************"
exit 1
}
# Exit si ce script n'existe pas
# Juste le nom du script sql, sans le path qui pourrait être devant
sqlscript=$(basename $sqlscript)
if [[ ! -f ./script_sql/$sqlscript ]] ; then
echo "Le script SQL ./script_sql/$sqlscript n'existe pas"
abort
fi
# Nom du script sql, sans l'extension .sql
sqlscript_name=${sqlscript%%.*}
#echo $sqlscript_name
# Get login, pass, dbname, and hostname
username=$(grep "/\*d\*/'username'" ../../config/app.php | cut -d"'" -f4) || abort
password=$(grep "/\*d\*/'password'" ../../config/app.php | cut -d"'" -f4) || abort
database=$(grep "/\*d\*/'database'" ../../config/app.php | cut -d"'" -f4) || abort
host=$(grep "/\*d\*/'host'" ../../config/app.php | cut -d"'" -f4) || abort
if [[ $DEBUG == 1 ]] ; then
echo "db: $database"
echo "user: $username"
echo "pass: $password"
echo "host: $host"
exit
fi
#cp -p ./script_sql/db-update-2016-07-01-irap.sql ./script_sql/db-update-2016-07-01-irap-build.sql
#cp -p ./script_sql/$sqlscript.sql ./script_sql/$sqlscript-build.sql || abort
cp -p ./script_sql/$sqlscript_name.sql ./script_sql/$sqlscript_name-build.sql || abort
#ls -l ./script_sql/
# Execute sql update script
if [[ $MACOS == 1 ]] ; then
# MacOS only :
sed -e "s/database/$database/" -i '' ./script_sql/$sqlscript_name-build.sql || abort
else
# Linux :
sed -e "s/database/$database/" -i ./script_sql/$sqlscript_name-build.sql || abort
fi
mysql $database --user=$username --password=$password -h $host < ./script_sql/$sqlscript_name-build.sql || abort
#mysql --user=$username --password=$password -h $host < ./script_sql/$sqlscript_name-build.sql || abort
# Delete temporary file and cakephp cache (-f avoids warning if no file)
rm -f ./script_sql/$sqlscript_name-build.sql
echo "Suppression du cache (mot passe sudo eventuellement necessaire)"
rm -f ../../tmp/cache/models/* || sudo rm -f ../../tmp/cache/models/*
# Vraiment utile ?
rm -f ../../tmp/cache/persistent/* || sudo rm -f ../../tmp/cache/persistent/*
#ls -l ./script_sql/
# Faire ca aussi si ca suffit pas...
#sudo chmod -R 777 ../../tmp
#sudo chmod -R 777 ../../vendor
#sudo chmod -R 777 ../../webroot
# PLUGIN update
# Installation plugin cakephp-dompdf
# (on va a la racine du projet)
#cd ../../
#php composer.phar require daoandco/cakephp-dompdf
#bin/cake plugin assets symlink
#cd -