Subversion Repositories Applications.gtt

Rev

Rev 175 | 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-in
SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

SCRIPTNAME=`basename "$0"`

# date du jour
DATE=`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 code
        dossier_svn="trunk"
        if [ "$#" -gt 1 ]; then
                echo "recuperation de la branche [$2]";
                dossier_svn="$2"
        else
                echo "recuperation du [trunk]"
        fi
        svn co "http://svn.tela-botanica.net/svn/applications/gtt/$dossier_svn" "$ANNEE"

        # copie du .htaccess
        if [ -e "$SCRIPTDIR/htaccess" ]; then
                echo "copie du .htaccess de reference"
                cp "$SCRIPTDIR/htaccess" "$ANNEE/.htaccess"
        fi

        # creation de la config
        echo "creation de la config"
        echo "<?php
// cree par clonegtt le $DATE
define('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; do
                echo "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 $CMD
                rm "${line}_${ANNEE}.sql"
        done

        # copie de l'ancienne base vers la nouvelle (configurer)
        if [ "$#" -gt 2 ]; then
                if [ "$3" = "clonebdd" ]; then
                        echo "clonage de la base precedente (prefixe [$BDD_SOURCE_PREFIXE])"
                        # copies SQL des tables a recuperer
                        copie_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"
                fi
        fi
}

if [ "$#" -lt 1 ]; then
        notice
else
        clone_gtt $@
fi