Files
mabibli_ynh/scripts/upgrade
T
2026-08-18 15:15:53 +02:00

63 lines
2.5 KiB
Bash
Executable File

#!/bin/bash
source _common.sh
source /usr/share/yunohost/helpers
#=================================================
# ARRÊT DU SERVICE
#=================================================
ynh_script_progression "Arrêt de $app..."
# Arrêter avant de remplacer les binaires, et surtout avant que les nouvelles
# migrations EF Core ne s'appliquent au démarrage : deux processus sur la même base
# SQLite pendant une migration est exactement ce qu'il faut éviter.
ynh_systemctl --service="$app" --action="stop" --log_path="systemd"
#=================================================
# MISE À JOUR DES BINAIRES
#=================================================
ynh_script_progression "Mise à jour des fichiers..."
# `ynh_setup_source` remplace le contenu d'`install_dir` par la nouvelle archive,
# après vérification du sha256.
#
# Les données ne sont pas concernées : la base vit dans `data_dir`
# (`ConnectionStrings__MaBibli` dans l'unité systemd), qui n'est touché ni ici ni par
# les ressources du manifeste. C'est précisément pour cela que la base n'est pas
# posée à côté du binaire — sinon chaque mise à jour l'emporterait.
ynh_setup_source --dest_dir="$install_dir"
chmod +x "$install_dir/$mabibli_binaire"
#=================================================
# CONFIGURATION NGINX ET SYSTEMD
#=================================================
ynh_script_progression "Mise à jour de la configuration..."
ynh_config_add_nginx
ynh_config_add_systemd
yunohost service add "$app" --description="Bibliothèque personnelle MaBibli"
#=================================================
# REDÉMARRAGE DU SERVICE
#=================================================
ynh_script_progression "Redémarrage de $app..."
# Le délai est plus large qu'à l'installation : une mise à jour peut embarquer des
# migrations EF Core à appliquer sur une base déjà remplie, ce qui prend plus de
# temps que la création d'un schéma vide.
#
# Si le démarrage échoue, YunoHost restaure la sauvegarde de sécurité prise avant la
# mise à jour. Cette sauvegarde-là ne contient pas `data_dir` (le cœur saute les
# répertoires de données avec `BACKUP_CORE_ONLY`) — ce qui tombe bien, puisque
# `data_dir` n'a pas été touché et contient toujours la bibliothèque.
ynh_systemctl --service="$app" --action="start" --log_path="systemd" \
--wait_until="Application started" --timeout=120
#=================================================
# FIN DU SCRIPT
#=================================================
ynh_script_progression "Mise à jour de $app terminée"