From d757ce229ddb398d96a07316ad8d78cd18a3fed2 Mon Sep 17 00:00:00 2001 From: Etienne Pallier Date: Mon, 27 Jan 2020 17:09:16 +0100 Subject: [PATCH] Amélioration script UPDATE --- install/installation.sh | 28 ++++++++++++++-------------- install/update.sh | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------- 2 files changed, 82 insertions(+), 37 deletions(-) diff --git a/install/installation.sh b/install/installation.sh index 14f5251..fb1f824 100755 --- a/install/installation.sh +++ b/install/installation.sh @@ -7,24 +7,16 @@ INSTALL_DATA_IRAP=1 # Le script peut-il continuer et créer les fichiers qui lui sont nécessaires ? access_path=`dirname $0` -echo -if [ -r "$access_path" ]; then - if [ -w "$access_path" ]; then - if [ -x "$access_path" ]; then - echo "Vous avez les droits suffisants sur ce repertoire pour exécuter ce script" - else - echo "Veuillez relancer le script en root" - exit 1 - fi - else - echo "Veuillez relancer le script en root" - exit 1 - fi +access_path="toto" +echo $access_path +if [[ -r "$access_path" && -w "$access_path" && -x "$access_path" ]]; then + echo "Vous avez les droits suffisants sur ce repertoire pour exécuter ce script" else - echo "Veuillez relancer le script en root" + echo "Veuillez relancer le script en tant que root" exit 1 fi + # Pour Mac OS recent (10.10, Yosemite), la syntaxe du SED est differente # Il faut donc faire une copie de ce fichier et transformer les instructions sed a l'interieur # Pour cela, il suffit d'executer ces 2 lignes : @@ -251,6 +243,14 @@ sudo chgrp -R $grp ./logs/ sudo chmod -R 777 ./vendor/ echo "==> Done" + +# Rendre les scripts executables +chmod +x SHOW_LOGS +chmod +x TEST_WEB +chmod +x TESTS.sh +chmod +x UPDATE +chmod +x VERSION + echo echo "Mise à jour des droits des dossiers tmp et logs" echo diff --git a/install/update.sh b/install/update.sh index 596a62c..2360354 100755 --- a/install/update.sh +++ b/install/update.sh @@ -34,25 +34,35 @@ function abort() { # ---------------------------------------- -# 0) Sauvegarde de l'état actuel du dossier database/update/ (dans /tmp) +# 0) Sauvegarde de certains éléments (dans /tmp) +# (pour voir s'ils vont changer après le "git pull") # ---------------------------------------- + +# a) Sauvegarde du fichier composer.json +cp -fp ../composer.json /tmp/ || abort +[[ $TEST == 1 ]] && cp ../composer.lock /tmp/composer.json +composer_json_prev=/tmp/composer.json + +# b) Sauvegarde du dossier database/update/ #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 +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 +echo "* 1) 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 @@ -66,9 +76,45 @@ chmod 777 webroot/img/photos/ cd - >/dev/null || abort + # ---------------------------------------- -# 2) On fait la différence entre les fichiers de mise à jour BD présents après le git et avant +# 2) Mise a jour des plugins php (dossier vendor/) si nécessaire +# (seulement si le fichier composer.json a changé) # ---------------------------------------- +echo +echo "* 2) Mise à jour des plugins php (seulement si nécessaire) :" +plugins_dir=../vendor +# Creation dossier vendor/ si n'existe pas encore +if [ ! -d $plugins_dir ] ; then + mkdir $plugins_dir + chmod 777 $plugins_dir +fi +chmod +x plugins_set.sh +chmod +x plugins_install.sh +diff ../composer.json $composer_json_prev >/dev/null +# Attention, ne pas faire "update" mais "install" +# car "install" n'installe que les NOUVEAUX plugins non déjà installés +# et "update" risquerait aussi d'installer des versions plus récentes +# que les plugins qui sont déjà installés (et donc pas encore testés) +##[[ $? == 1 ]] && ./plugins_install.sh +if [[ $? == 0 ]] ; then + echo "==> PAS NÉCESSAIRE" +else + echo "OUI" + #./plugins_install.sh +fi + + + +# ---------------------------------------- +# 3) Mise a jour de la BD (si nécessaire) +# (seulement s'il y a au moins 1 nouveau script db-update-YYYY-MM-DD.sh dans database/update/) +# ---------------------------------------- + +echo +echo "* 3) Mise à jour de la Base de Données (seulement si nécessaire) :" + +# a) On fait la différence entre les fichiers de mise à jour BD présents après le git et avant # TEST only [[ $TEST == 1 ]] && (rm ../database/update/db-update-2014-08-23.sh ; touch ../database/update/test.txt ; touch ../database/update/db-update-2014-08-24.sh ; touch ../database/update/db-update-2014-08-25.sh; chmod +x ../database/update/db-update-2014-*.sh) @@ -78,25 +124,23 @@ 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" 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 +#[[ $db_update_scripts_new == '' ]] && echo "==> PAS NÉCESSAIRE" ; exit 0 +if [[ $db_update_scripts_new == '' ]] ; then + echo "==> PAS NÉCESSAIRE" + echo + exit 0 +fi #nb_scripts=${#db_update_scripts_new[@]} #[[ $nb_scripts == 0 ]] && exit 0 +# b) Mise a jour de la BD -# ---------------------------------------- -# 3) (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/) -# ---------------------------------------- - -echo -echo "* Mise à jour de la Base de Données :" echo "Voici le(s) script(s) à exécuter :" echo ${db_update_scripts_new[@]} # Remove files that were DELETED by "git pull" @@ -108,18 +152,19 @@ for db_update_script_new in ${db_update_scripts_new[@]} ; do # Ignorer les fichiers supprimés par le "git pull" [[ ! -f $db_update_script_new ]] && continue 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 + #echo "- Execution du script de mise à jour de la BD $db_update_scripts_folder/$db_update_script_new (o/n) ? [o]" + echo "- Execution du script de mise à jour de la BD $db_update_scripts_folder/$db_update_script_new" + #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 [[ $TEST == 1 ]] && (rm test.txt ; rm db-update-2014-*.sh) -cd - >/dev/null +cd - >/dev/null + -# Test only echo -echo "=> Fait" +#echo "=> MISE À JOUR TERMINÉE" -- libgit2 0.21.2