1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/nextcloud_ynh.git synced 2024-09-03 19:55:57 +02:00

Upgrade sécurisé

Je veux bien des review avant de merger ça.
On vient déjà de foirer une install de nextcloud, je préfère être sûr...
This commit is contained in:
Maniack Crudelis 2017-01-06 00:59:32 +01:00 committed by GitHub
parent 6fe7c35186
commit de45255dc9

View file

@ -9,10 +9,21 @@ dbname=$app
dbuser=$app
# Backup the current version of the app, restore it if the upgrade fails
if sudo yunohost backup list | grep -q $app-before-upgrade > /dev/null 2>&1; then # Supprime l'ancienne archive seulement si elle existe
sudo yunohost backup delete $app-before-upgrade
backup_number=1
old_backup_number=2
if sudo yunohost backup list | grep -q $app-before-upgrade1 > /dev/null 2>&1; then # Vérifie l'existence d'une archive déjà numéroté à 1.
backup_number=2 # Et passe le numéro de l'archive à 2
old_backup_number=1
fi
sudo yunohost backup create --ignore-hooks --apps $app --name $app-before-upgrade
sudo yunohost backup create --ignore-hooks --apps $app --name $app-before-upgrade$backup_number # Créer un backup différent de celui existant.
if [ "$?" -eq 0 ]; then # Si le backup est un succès, supprime l'archive précédente.
if sudo yunohost backup list | grep -q $app-before-upgrade$old_backup_number > /dev/null 2>&1; then # Vérifie l'existence de l'ancienne archive avant de la supprimer, pour éviter une erreur.
sudo yunohost backup delete $app-before-upgrade$old_backup_number > /dev/null
fi
else # Si le backup a échoué
ynh_die "Backup failed, the upgrade process was aborted."
fi
EXIT_PROPERLY () {
exit_code=$?
if [ "$exit_code" -eq 0 ]; then
@ -20,9 +31,13 @@ EXIT_PROPERLY () {
fi
trap '' EXIT
set +eu
echo "Upgrade failed." >&2
if sudo yunohost backup list | grep -q $app-before-upgrade$backup_number > /dev/null 2>&1; then # Vérifie l'existence de l'archive avant de supprimer l'application et de restaurer
then
sudo yunohost app remove $app # Supprime l'application avant de la restaurer.
sudo yunohost backup restore --ignore-hooks $app-before-upgrade --apps $app --force # Restore the backup if upgrade failed
ynh_die "Upgrade failed. The app was restored to the way it was before the failed upgrade."
sudo yunohost backup restore --ignore-hooks $app-before-upgrade$backup_number --apps $app --force # Restore the backup if upgrade failed
ynh_die "The app was restored to the way it was before the failed upgrade."
fi
}
set -eu
trap EXIT_PROPERLY EXIT