Subversion Repositories Applications.gtt

Rev

Rev 192 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 192 Rev 194
1
#!/bin/bash
1
#!/bin/bash
2
 
2
 
3
# Crée une instance de GTT pour l'année à venir.
3
# Crée une instance de GTT pour l'année à venir.
4
#
4
#
5
# Nécessite de remplir config.sh à partir de config.defaut.sh.
5
# Nécessite de remplir config.sh à partir de config.defaut.sh.
6
# Si un fichier "htaccess" est présent, il sera renommé en ".htaccess" dans le
6
# Si un fichier "htaccess" est présent, il sera renommé en ".htaccess" dans le
7
#	dossier de destination de la nouvelle instance
7
#	dossier de destination de la nouvelle instance
8
#
8
#
9
# Utilisation :
9
# Utilisation :
10
#		./clonegtt.sh 2016 trunk clonebdd
10
#		./clonegtt.sh 2016 trunk clonebdd
11
#
11
#
12
# Mathias - 2015-12-23
12
# Mathias - 2015-12-23
13
 
13
 
14
# ligne magique trouvee sur http://stackoverflow.com/questions/59895/can-a-bash-script-tell-what-directory-its-stored-in
14
# ligne magique trouvee sur http://stackoverflow.com/questions/59895/can-a-bash-script-tell-what-directory-its-stored-in
15
SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
15
SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
16
 
16
 
17
SCRIPTNAME=`basename "$0"`
17
SCRIPTNAME=`basename "$0"`
18
 
18
 
19
# date du jour
19
# date du jour
20
DATE=`date +%Y-%m-%d`
20
DATE=`date +%Y-%m-%d`
21
 
21
 
22
# chargement de la config
22
# chargement de la config
23
. "$SCRIPTDIR/config.sh"
23
. "$SCRIPTDIR/config.sh"
24
 
24
 
25
function notice {
25
function notice {
26
	echo "Utilisation: $SCRIPTNAME annee branche [clonebdd]"
26
	echo "Utilisation: $SCRIPTNAME annee branche [clonebdd]"
27
	echo "	annee: cree une instance de GTT pour l'annee fournie (ex: 2016), dans un nouveau dossier correspondant"
27
	echo "	annee: cree une instance de GTT pour l'annee fournie (ex: 2016), dans un nouveau dossier correspondant"
28
	echo "	branche: utilise une branche particuliere du SVN (ex: trunk, branches/v1.2-democrite)"
28
	echo "	branche: utilise une branche particuliere du SVN (ex: trunk, branches/v1.2-democrite)"
29
	echo "	clonebdd (optionnel): si mentionne, copiera les donnees (utilisateurs, projets, categories) de l'installation, dont le prefixe est specifie dans config.sh"
29
	echo "	clonebdd (optionnel): si mentionne, copiera les donnees (utilisateurs, projets, categories) de l'installation, dont le prefixe est specifie dans config.sh"
30
	echo "Exemples:"
30
	echo "Exemples:"
31
	echo "	$SCRIPTNAME 2016 trunk clonebdd"
31
	echo "	$SCRIPTNAME 2016 trunk clonebdd"
32
	echo "	$SCRIPTNAME 2016 branches/v1.2-democrite"
32
	echo "	$SCRIPTNAME 2016 branches/v1.2-democrite"
33
}
33
}
34
 
34
 
35
function copie_table {
35
function copie_table {
36
	REQ="TRUNCATE ${PREFIXE}$1; INSERT INTO ${PREFIXE}$1 SELECT * FROM ${BDD_SOURCEPREFIXE}$1;"
36
	REQ="TRUNCATE ${PREFIXE}$1; INSERT INTO ${PREFIXE}$1 SELECT * FROM ${BDD_SOURCE_PREFIXE}$1;"
37
	#echo "$REQ"
37
	#echo "$REQ"
38
	CMD="$CHEMIN_MYSQL/mysql -h$BDD_HOTE -u$BDD_LOGIN -p$BDD_MDP -e \"$REQ\" $BDD_BASE"
38
	CMD="$CHEMIN_MYSQL/mysql -h$BDD_HOTE -u$BDD_LOGIN -p$BDD_MDP -e \"$REQ\" $BDD_BASE"
39
	eval "$CMD"
39
	eval "$CMD"
40
}
40
}
41
 
41
 
42
function clone_gtt {
42
function clone_gtt {
43
	ANNEE="$1"
43
	ANNEE="$1"
44
	PREFIXE="gtt_${ANNEE}_"
44
	PREFIXE="gtt_${ANNEE}_"
45
 
45
 
46
	echo "deploiement d'une instance de GTT pour l'ANNEE [$ANNEE]"
46
	echo "deploiement d'une instance de GTT pour l'ANNEE [$ANNEE]"
47
 
47
 
48
	# copie du code
48
	# copie du code
49
	dossier_svn="trunk"
49
	dossier_svn="trunk"
50
	if [ "$#" -gt 1 ]; then
50
	if [ "$#" -gt 1 ]; then
51
		echo "recuperation de la branche [$2]";
51
		echo "recuperation de la branche [$2]";
52
		dossier_svn="$2"
52
		dossier_svn="$2"
53
	else
53
	else
54
		echo "recuperation du [trunk]"
54
		echo "recuperation du [trunk]"
55
	fi
55
	fi
56
	svn co "http://svn.tela-botanica.net/svn/applications/gtt/$dossier_svn" "$ANNEE"
56
	svn co "http://svn.tela-botanica.net/svn/applications/gtt/$dossier_svn" "$ANNEE"
57
 
57
 
58
	# copie du .htaccess
58
	# copie du .htaccess
59
	if [ -e "$SCRIPTDIR/htaccess" ]; then
59
	if [ -e "$SCRIPTDIR/htaccess" ]; then
60
		echo "copie du .htaccess de reference"
60
		echo "copie du .htaccess de reference"
61
		cp "$SCRIPTDIR/htaccess" "$ANNEE/.htaccess"
61
		cp "$SCRIPTDIR/htaccess" "$ANNEE/.htaccess"
62
	fi
62
	fi
63
 
63
 
64
	# creation de la config
64
	# creation de la config
65
	echo "creation de la config"
65
	echo "creation de la config"
66
	echo "<?php
66
	echo "<?php
67
// cree par clonegtt le $DATE
67
// cree par clonegtt le $DATE
68
define('GTT_AUTH_SESSION_NOM', 'gtt_auth_$PREFIXE');
68
define('GTT_AUTH_SESSION_NOM', 'gtt_auth_$PREFIXE');
69
define('GTT_BDD_NOM', '$BDD_BASE');
69
define('GTT_BDD_NOM', '$BDD_BASE');
70
define('GTT_BDD_DSN', 'mysqli://$BDD_LOGIN:$BDD_MDP@$BDD_HOTE/'.GTT_BDD_NOM);
70
define('GTT_BDD_DSN', 'mysqli://$BDD_LOGIN:$BDD_MDP@$BDD_HOTE/'.GTT_BDD_NOM);
71
define('GTT_BDD_PREFIXE', '$PREFIXE');
71
define('GTT_BDD_PREFIXE', '$PREFIXE');
72
define('GTT_DEBOGAGE', false);
72
define('GTT_DEBOGAGE', false);
73
define('GTT_DEBOGAGE_SQL', false);
73
define('GTT_DEBOGAGE_SQL', false);
74
?>" > "$ANNEE/config.inc.php"
74
?>" > "$ANNEE/config.inc.php"
75
 
75
 
76
	# modification des fichiers .sql pour ajouter le prefixe, et insertion dans la base
76
	# modification des fichiers .sql pour ajouter le prefixe, et insertion dans la base
77
	# "sort" sert a s'assurer que "installation" est execute avant "maj" @WARNING bancal comme systeme !
77
	# "sort" sert a s'assurer que "installation" est execute avant "maj" @WARNING bancal comme systeme !
78
	find "$ANNEE/documentation" -name "*.sql" | sort | while read line; do
78
	find "$ANNEE/documentation" -name "*.sql" | sort | while read line; do
79
		echo "Insertion de $line"
79
		echo "Insertion de $line"
80
		sed "s/gestion_/${PREFIXE}gestion_/" "$line" > "${line}_${ANNEE}.sql"
80
		sed "s/gestion_/${PREFIXE}gestion_/" "$line" > "${line}_${ANNEE}.sql"
81
		CMD="$CHEMIN_MYSQL/mysql -h$BDD_HOTE -u$BDD_LOGIN -p$BDD_MDP $BDD_BASE < ${line}_${ANNEE}.sql"
81
		CMD="$CHEMIN_MYSQL/mysql -h$BDD_HOTE -u$BDD_LOGIN -p$BDD_MDP $BDD_BASE < ${line}_${ANNEE}.sql"
82
		eval $CMD
82
		eval $CMD
83
		rm "${line}_${ANNEE}.sql"
83
		rm "${line}_${ANNEE}.sql"
84
	done
84
	done
85
 
85
 
86
	# copie de l'ancienne base vers la nouvelle (configurer)
86
	# copie de l'ancienne base vers la nouvelle (configurer)
87
	if [ "$#" -gt 2 ]; then
87
	if [ "$#" -gt 2 ]; then
88
		if [ "$3" = "clonebdd" ]; then
88
		if [ "$3" = "clonebdd" ]; then
89
			echo "clonage de la base precedente (prefixe [$BDD_SOURCE_PREFIXE])"
89
			echo "clonage de la base precedente (prefixe [$BDD_SOURCE_PREFIXE])"
90
			# copies SQL des tables a recuperer
90
			# copies SQL des tables a recuperer
91
			copie_table "gestion_absence_motif"
91
			copie_table "gestion_absence_motif"
92
			copie_table "gestion_projet"
92
			copie_table "gestion_projet"
93
			copie_table "gestion_projet_categorie"
93
			copie_table "gestion_projet_categorie"
94
			copie_table "gestion_utilisateur"
94
			copie_table "gestion_utilisateur"
95
			# copie_table "gestion_utilisateur_a_projet"
95
			# copie_table "gestion_utilisateur_a_projet"
96
			copie_table "gestion_utilisateur_statut"
96
			copie_table "gestion_utilisateur_statut"
97
		fi
97
		fi
98
	fi
98
	fi
99
}
99
}
100
 
100
 
101
if [ "$#" -lt 1 ]; then
101
if [ "$#" -lt 1 ]; then
102
	notice
102
	notice
103
else
103
else
104
	clone_gtt $@
104
	clone_gtt $@
105
fi
105
fi