#!/bin/bash

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

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

#=================================================
# RETRIEVE ARGUMENTS
#=================================================

old_domain=$YNH_APP_OLD_DOMAIN
old_path=$YNH_APP_OLD_PATH

new_domain=$YNH_APP_NEW_DOMAIN
new_path=$YNH_APP_NEW_PATH

app=$YNH_APP_INSTANCE_NAME

#=================================================
# LOAD SETTINGS
#=================================================
ynh_script_progression --message="Loading installation settings..." --time --weight=1

final_path=$(ynh_app_setting_get "$app" final_path)
is_public=$(ynh_app_setting_get "$app" is_public)

#=================================================
# CHECK WHICH PARTS SHOULD BE CHANGED
#=================================================

change_domain=0
if [ "$old_domain" != "$new_domain" ]
then
	change_domain=1
fi

change_path=0
if [ "$old_path" != "$new_path" ]
then
	change_path=1
fi

#=================================================
# STANDARD MODIFICATIONS
#=================================================
# STOP SYSTEMD SERVICE
#=================================================

ynh_script_progression --message="Stopping systemd services..." --time --weight=1

ynh_systemd_action --service_name="$app" --action="stop"
ynh_systemd_action --service_name="$app-celery" --action="stop"

#=================================================
# STANDARD MODIFICATIONS
#=================================================
# MODIFY URL IN NGINX CONF
#=================================================

ynh_script_progression --message="Updating nginx web server configuration..." --time --weight=1

nginx_conf_path="/etc/nginx/conf.d/$old_domain.d/$app.conf"
finalnginxconf=$nginx_conf_path

# Change the path in the nginx config file
if [ $change_path -eq 1 ]
then
	ynh_replace_string "location $old_path"    "location $new_path"    "$nginx_conf_path"
	ynh_replace_string "SCRIPT_NAME $old_path" "SCRIPT_NAME $new_path" "$nginx_conf_path"
fi

# Change the domain for nginx
if [ $change_domain -eq 1 ]
then

	finalnginxconf="/etc/nginx/conf.d/${new_domain}.d/${app}.conf"
	mv "$nginx_conf_path" "$finalnginxconf"
fi

#=================================================
# Edit specific content from nginx configuration
#=================================================
settings="$final_path/venv/lib/python3.5/site-packages/weblate/settings.py"

if [ "$old_path" == "/" ] && [ "$new_path" != "/" ]
then
	if [ "$is_public" -eq 0 ]
	then
		# ynh panel is only comptable with non-root installation
		# ynh panel is useless for public websites
		ynh_replace_string "	#include conf.d/"  "	include conf.d/"  "$finalnginxconf"
	fi
fi

if [ "$old_path" != "/" ] && [ "$new_path" == "/" ]
then

	# ynh panel is only comptable with non-root installation
	ynh_replace_string "	include conf.d/"  "	#include conf.d/"  "$finalnginxconf"
fi

ynh_store_file_checksum "$finalnginxconf"

#=================================================
# MODIFY settings.py
#=================================================
ynh_script_progression --message="Modify weblate's config file..." --time --weight=1

# Change the path in the nginx config file
if [ $change_path -eq 1 ]
then
	ynh_replace_string "URL_PREFIX = '$old_path" "URL_PREFIX = '$new_path" "$settings"
fi

# Change the domain for nginx
if [ $change_domain -eq 1 ]
then
	# replace SERVER_EMAIL
	ynh_replace_string "noreply@$old_domain"     "noreply@$new_domain"     "$settings"
	# replace ALLOWED_HOSTS
	ynh_replace_string "['$old_domain']"         "['$new_domain']"         "$settings"
fi

if [ "$old_path" == "/" ] && [ "$new_path" != "/" ]
then
	ynh_replace_string "URL_PREFIX = ''" "URL_PREFIX = '$new_path'" "$settings"
fi

if [ "$old_path" != "/" ] && [ "$new_path" == "/" ]
then
	# root install as an empty PATHURL to prevent '//static'
	ynh_replace_string "URL_PREFIX = '$old_path'" "URL_PREFIX = ''" "$settings"
fi

ynh_store_file_checksum "$settings"

#=================================================
# ChangeSite inside weblate
#=================================================
ynh_script_progression --message="Run weblate's command changesite..." --time --weight=1
(
	set +eu
	source "${final_path}/venv/bin/activate"
	export DJANGO_SETTINGS_MODULE="weblate.settings"
	weblate changesite --set-name "$new_domain"
)

#=================================================
# GENERIC FINALISATION
#=================================================
# START SYSTEMD SERVICE
#=================================================
ynh_script_progression --message="Starting systemd services..." --time --weight=1

ynh_systemd_action --service_name="$app" --action="start"
ynh_systemd_action --service_name="$app-celery" --action="start"

#=================================================
# RELOAD NGINX
#=================================================
ynh_script_progression --message="Reloading nginx web server..." --time --weight=1

ynh_systemd_action --service_name=nginx --action=reload

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

ynh_script_progression --message="Change of URL completed for $app" --time --last