Files
Cyber MawonajandClaude Opus 5 07b349be86 Paquet YunoHost pour Vèy Lalwa — v1.0.1~ynh1
Format de paquetage 2, helpers 2.1, sur le modèle de jwe_ynh.

Ce que l'installation fait, dans cet ordre : extraire l'archive, rendre le
.env depuis les réponses d'installation, construire l'application web (npm ci,
polices, build, prune), monter l'environnement Python, puis remplir la base
depuis le corpus de recherche embarqué.

Trois choix qui méritent d'être dits :

- La base, le cache et l'export vivent dans data_dir, jamais dans le répertoire
  d'installation. « ynh_setup_source --full_replace » efface celui-ci
  intégralement à chaque mise à jour : y laisser la base effacerait tout le
  travail de veille accumulé. Vérifié en simulant la mise à jour — 59 textes,
  367 sources et 3 passages survivent à l'effacement.
- Un domaine dédié, sans question « path ». Les liens internes sont absolus et
  SvelteKit demanderait une recompilation avec « paths.base » pour tenir sur
  un sous-chemin. Mieux vaut une contrainte annoncée qu'un sous-chemin à
  moitié fonctionnel.
- Les identifiants Légifrance sont facultatifs, et les tests s'exécutent sans :
  cela vérifie au passage le mode dégradé documenté. Le rapport de passage
  affiche alors « legifrance ignoré — repli sur … », et les deux autres
  collecteurs détectent quand même les 7 ajouts et les 4 changements de
  décision.

Un minuteur systemd distinct porte le passage de collecte, le helper
« ynh_config_add_systemd » ne gérant que l'unité principale. Il est arrêté
avant toute mise à jour : un passage qui démarrerait pendant le remplacement
des fichiers travaillerait sur un arbre à moitié écrit.

Vérifié avant publication, pas après : séquence npm complète depuis l'archive
publiée, environnement Python, remplissage, démarrage du service lisant la base
de data_dir, origine déduite des en-têtes du proxy, passage en mode dégradé, et
simulation d'effacement du répertoire d'installation. shellcheck sans
avertissement, TOML valides.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-25 23:33:28 -04:00

98 lines
3.2 KiB
Bash
Executable File

#!/bin/bash
#=================================================
# IMPORT GENERIC HELPERS
#=================================================
source _common.sh
source /usr/share/yunohost/helpers
#=================================================
# STOP SYSTEMD SERVICE
#=================================================
ynh_script_progression "Arrêt de $app…"
# Le minuteur est arrêté aussi : un passage de collecte qui démarrerait pendant
# le remplacement des fichiers travaillerait sur un arbre à moitié écrit.
systemctl stop "$app-pipeline.timer" 2>/dev/null || true
ynh_systemctl --service="$app" --action="stop" --log_path="/var/log/$app/$app.log"
#=================================================
# DOWNLOAD, CHECK AND UNPACK SOURCE
#=================================================
ynh_script_progression "Mise à jour des fichiers…"
# --full_replace efface intégralement $install_dir. C'est sans risque ici : la
# base, le cache et l'export vivent dans $data_dir, qui n'est pas touché.
ynh_setup_source --dest_dir="$install_dir" --full_replace
chown -R "$app:$app" "$install_dir"
chown -R "$app:$app" "$data_dir"
#=================================================
# UPDATE CONFIGURATION
#=================================================
ynh_script_progression "Mise à jour de la configuration…"
ynh_config_add --template="env" --destination="$install_dir/.env"
chown "$app:$app" "$install_dir/.env"
chmod 600 "$install_dir/.env"
#=================================================
# REBUILD
#=================================================
ynh_script_progression "Reconstruction de l'application web (quelques minutes)…"
construire_application_web
ynh_script_progression "Reconstruction de l'environnement Python…"
construire_environnement_python
#=================================================
# DATABASE
#=================================================
if base_deja_remplie; then
ynh_script_progression "Application des migrations, données conservées…"
migrer_la_base
else
# Cas d'une base perdue ou d'une première mise à jour depuis une version
# qui la rangeait ailleurs : on repart du corpus plutôt que de laisser
# l'application sans données.
ynh_script_progression "Base absente : remplissage depuis le corpus…"
remplir_la_base
fi
#=================================================
# REAPPLY SYSTEM CONFIGURATION
#=================================================
ynh_script_progression "Mise à jour de la configuration système…"
mkdir -p "/var/log/$app"
chown -R "$app:$app" "/var/log/$app"
ynh_config_add_nginx
ynh_config_add_systemd
yunohost service add "$app" --description="$DESCRIPTION_SERVICE" \
--log="/var/log/$app/$app.log"
installer_le_minuteur
ynh_config_add_logrotate
#=================================================
# START SYSTEMD SERVICE
#=================================================
ynh_script_progression "Démarrage de $app…"
ynh_systemctl --service="$app" --action="start" --wait_until="Listening" \
--log_path="/var/log/$app/$app.log"
#=================================================
# END OF SCRIPT
#=================================================
ynh_script_progression "Mise à jour de $app terminée"