#!/bin/bash

#=================================================
# IMPORT GENERIC HELPERS
#=================================================

source _common.sh
source /usr/share/yunohost/helpers

#=================================================
# CREATE AN APPLICATION BACKUP
#=================================================

if [[ -f "$install_dir/scripts/backup.php" && -f "$install_dir/data/refuge.sqlite" ]] && \
    php -l "$install_dir/app/Services/BackupService.php" >/dev/null 2>&1; then
    ynh_exec_as_app php "$install_dir/scripts/backup.php" pre-upgrade-yunohost
elif [[ -f "$install_dir/data/refuge.sqlite" ]]; then
    ynh_print_warn --message="La sauvegarde applicative préalable est ignorée car l'ancienne version n'est pas compatible avec PHP $php_version. La sauvegarde de sécurité YunoHost reste active."
fi

#=================================================
# MIGRATE LEGACY DATA
#=================================================

migrate_legacy_data

data_inventory="$(mktemp)"
data_guard="$data_dir/.globinours-upgrade-guard"
inventory_persistent_data "$data_inventory"
touch "$data_guard"

#=================================================
# ENABLE MAINTENANCE MODE
#=================================================

touch "$data_dir/storage/maintenance.flag"
trap 'rm -f "$data_dir/storage/maintenance.flag" "$data_guard" "$data_inventory"' EXIT

#=================================================
# DOWNLOAD, CHECK AND UNPACK SOURCE
#=================================================

ynh_script_progression "Upgrading source files..."

ynh_setup_source --dest_dir="$install_dir" --full_replace --keep="data storage public/media"

# Physical legacy directories were kept until their migration was complete.
for migrated_path in "$install_dir/data" "$install_dir/storage" "$install_dir/public/media"; do
    if [[ -d "$migrated_path" && ! -L "$migrated_path" ]]; then
        ynh_safe_rm "$migrated_path"
    fi
done

#=================================================
# UPDATE APPLICATION AND SYSTEM CONFIGURATION
#=================================================

prepare_persistent_paths
install_yunohost_logo
ynh_config_add_phpfpm
ynh_config_add_nginx
ynh_exec_as_app php "$install_dir/scripts/migrate.php"

if [[ ! -f "$data_guard" ]]; then
    ynh_die --message="The persistent data directory was replaced during the upgrade."
fi
verify_persistent_inventory "$data_inventory"
repair_and_verify_permissions

rm -f "$data_dir/storage/maintenance.flag" "$data_guard" "$data_inventory"
trap - EXIT

ynh_systemctl --service="php$php_version-fpm" --action=reload

#=================================================
# END OF SCRIPT
#=================================================

ynh_script_progression "Upgrade of $app completed"
