Rev 170 | Rev 187 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
#!/bin/bash# Crée une instance de GTT pour l'année à venir.## Nécessite de remplir config.sh à partir de config.defaut.sh.# Si un fichier "htaccess" est présent, il sera renommé en ".htaccess" dans le# dossier de destination de la nouvelle instance## Utilisation :# ./clonegtt.sh 2016 trunk clonebdd## Mathias - 2015-12-23# ligne magique trouvee sur http://stackoverflow.com/questions/59895/can-a-bash-script-tell-what-directory-its-stored-inSCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"SCRIPTNAME=`basename "$0"`# date du jourDATE=`date +%Y-%m-%d`# chargement de la config. "$SCRIPTDIR/config.sh"function notice {echo "Utilisation: $SCRIPTNAME annee branche [clonebdd]"echo " annee: cree une instance de GTT pour l'annee fournie (ex: 2016), dans un nouveau dossier correspondant"echo " branche: utilise une branche particuliere du SVN (ex: trunk, branches/v1.2-democrite)"echo " clonebdd (optionnel): si mentionne, copiera les donnees (utilisateurs, projets, categories) de l'installation, dont le prefixe est specifie dans config.sh"echo "Exemples:"echo " $SCRIPTNAME 2016 trunk clonebdd"echo " $SCRIPTNAME 2016 branches/v1.2-democrite"}function copie_table {REQ="TRUNCATE ${PREFIXE}$1; INSERT INTO ${PREFIXE}$1 SELECT * FROM ${BDD_SOURCEPREFIXE}$1;"#echo "$REQ"CMD="$CHEMIN_MYSQL/mysql -h$BDD_HOTE -u$BDD_LOGIN -p$BDD_MDP -e \"$REQ\" $BDD_BASE"eval "$CMD"}function clone_gtt {ANNEE="$1"PREFIXE="gtt_${ANNEE}_"echo "deploiement d'une instance de GTT pour l'ANNEE [$ANNEE]"# copie du codedossier_svn="trunk"if [ "$#" -gt 1 ]; thenecho "recuperation de la branche [$2]";dossier_svn="$2"elseecho "recuperation du [trunk]"fisvn co "http://svn.tela-botanica.net/svn/applications/gtt/$dossier_svn" "$ANNEE"# copie du .htaccessif [ -e "$SCRIPTDIR/htaccess" ]; thenecho "copie du .htaccess de reference"cp "$SCRIPTDIR/htaccess" "$ANNEE/.htaccess"fi# creation de la configecho "creation de la config"echo "<?php// cree par clonegtt le $DATEdefine('GTT_AUTH_SESSION_NOM', 'gtt_auth_$PREFIXE');define('GTT_BDD_NOM', '$BDD_BASE');define('GTT_BDD_DSN', 'mysql://$BDD_LOGIN:$BDD_MDP@$BDD_HOTE/'.GTT_BDD_NOM);define('GTT_BDD_PREFIXE', '$PREFIXE');define('GTT_DEBOGAGE', false);define('GTT_DEBOGAGE_SQL', false);?>" > "$ANNEE/config.inc.php"# modification des fichiers .sql pour ajouter le prefixe, et insertion dans la base# "sort" sert a s'assurer que "installation" est execute avant "maj" @WARNING bancal comme systeme !find "$ANNEE/documentation" -name "*.sql" | sort | while read line; doecho "Insertion de $line"sed "s/gestion_/${PREFIXE}gestion_/" "$line" > "${line}_${ANNEE}.sql"CMD="$CHEMIN_MYSQL/mysql -h$BDD_HOTE -u$BDD_LOGIN -p$BDD_MDP $BDD_BASE < ${line}_${ANNEE}.sql"eval $CMDrm "${line}_${ANNEE}.sql"done# copie de l'ancienne base vers la nouvelle (configurer)if [ "$#" -gt 2 ]; thenif [ "$3" = "clonebdd" ]; thenecho "clonage de la base precedente (prefixe [$BDD_SOURCE_PREFIXE])"# copies SQL des tables a recuperercopie_table "gestion_absence_motif"copie_table "gestion_projet"copie_table "gestion_projet_categorie"copie_table "gestion_utilisateur"copie_table "gestion_utilisateur_a_projet"copie_table "gestion_utilisateur_statut"fifi}if [ "$#" -lt 1 ]; thennoticeelseclone_gtt $@fi