#!/bin/bash

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

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

can_remove_db=${can_remove_db:=1}
can_remove_home=${can_remov_home:=1}
can_remove_user=${can_remove_user:=1}

#=================================================
# LOAD SETTINGS
#=================================================
ynh_script_progression --message="Load settings"
app=$YNH_APP_INSTANCE_NAME

domain=$(ynh_app_setting_get $app domain)
db_name=$(ynh_app_setting_get $app db_name)
final_path=$(ynh_app_setting_get $app final_path)

#=================================================
# STANDARD REMOVE
#=================================================
# STOP AND REMOVE SERVICE
#=================================================
ynh_script_progression --message="Remove services"
yunohost service remove $app.target
systemctl stop ${app}.target ${app}_sidekiq.service ${app}_web.service
systemctl disable ${app}.target ${app}_sidekiq.service ${app}_web.service --quiet
ynh_secure_remove --file="/etc/systemd/system/${app}_web.service"
ynh_secure_remove --file="/etc/systemd/system/${app}_sidekiq.service"
ynh_secure_remove --file="/etc/tmpfiles.d/${app}.conf"
ynh_secure_remove --file="/etc/systemd/system/${app}.target"
ynh_secure_remove --file="/run/${app}"
systemctl daemon-reload

#=================================================
# REMOVE SERVICE FROM ADMIN PANEL
#=================================================

if yunohost service status | grep -q $app
then
	echo "Remove $app service"
	yunohost service remove $app
fi

#=================================================
# REMOVE THE POSTGRESQL DATABASE
#=================================================
if [ $can_remove_db -eq 1 ]; then
  ynh_script_progression --message="Remove database"
  # Remove a database if it exists, along with the associated user
  ynh_psql_remove_db $db_name $db_name
fi

#=================================================
# REMOVE DEPENDENCIES
#=================================================
ynh_script_progression --message="Remove app dependencies" --weight=10
# Remove metapackage and its dependencies
ynh_remove_app_dependencies

#=================================================
# REMOVE NGINX CONFIGURATION
#=================================================
ynh_script_progression --message="Remove nginx config"

# Remove the dedicated nginx config
ynh_remove_nginx_config

#=================================================
# GENERIC FINALIZATION
#=================================================
# REMOVE DEDICATED USER
#=================================================
if [ $can_remove_user -eq 1 ]; then
  ynh_script_progression --message="Remove $app user"
  # Delete a system user
  # because we use gpg, sometimes rogue processes (gpg an d dirmngr) stays a bit,
  # preventing the deletion of the user. Hence we kill all processes belonging to $app
  pkill -9 -u `id -u $app`
  ynh_system_user_delete $app
fi

#=================================================
# REMOVE RUBY
#=================================================
ynh_script_progression --message="Remove ruby (if this is the last app using it)"
source $final_path/Experimental_helpers/ynh_install_ruby/ynh_install_ruby
ynh_remove_ruby

#=================================================
# REMOVE APP MAIN DIR
#=================================================
if [ $can_remove_home -eq 1 ]; then
  ynh_script_progression --message="Remove $final_path"
  # Remove the app directory securely
  ynh_secure_remove "$final_path"
fi