#!/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"
