diff --git a/scripts/upgrade b/scripts/upgrade index 526e0ee..9dfe07e 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -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 - 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." + 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$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