From c50ed41723ff6b9f17fab689759651f687cae877 Mon Sep 17 00:00:00 2001 From: polytan02 Date: Tue, 17 Jan 2017 19:58:01 +0000 Subject: [PATCH] Backup before upgrade and restore if it fails --- scripts/upgrade | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/scripts/upgrade b/scripts/upgrade index a2315eb..1496c48 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -1,18 +1,30 @@ #!/bin/bash -#set -eu - -# Charge les fonctions génériques habituellement utilisées dans le script -#source fonctions - -# Active trap pour arrêter le script si une erreur est détectée. -#TRAP_ON - -# Source app helpers -source /usr/share/yunohost/helpers # We retrieve app parameters app=$YNH_APP_INSTANCE_NAME +# 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 +fi +sudo yunohost backup create --ignore-hooks --apps $app --name ${app}-before-upgrade +EXIT_PROPERLY () { + exit_code=$? + if [ "$exit_code" -eq 0 ]; then + exit 0 # Quitte sans erreur si le script se termine correctement. + fi + trap '' EXIT + set +eu + 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." +} +set -eu +trap EXIT_PROPERLY EXIT + +# Source app helpers +source /usr/share/yunohost/helpers + # We check variables are not empty CHECK_VAR () { # Vérifie que la variable n'est pas vide. # $1 = Variable à vérifier