#!/bin/bash
app=$YNH_APP_INSTANCE_NAME


# Installation paths
INSTALL_DIR=/opt/yunohost/ihatemoney

# Source YunoHost helpers
. /usr/share/yunohost/helpers

domain=$(ynh_app_setting_get $app domain)
path=$(ynh_app_setting_get $app path)
is_public=$(ynh_app_setting_get "$app" is_public)

VENV_PY_VERSION=$(echo ${INSTALL_DIR}/venv/bin/python*.*|sed 's/.*python//')
SYSTEM_PY_VERSION=$(readlink /usr/bin/python3|sed s/.*python//)

# Source local utils
source _common.sh

ynh_clean_setup () {
    if [ -e /opt/yunohost/ihatemoney/venv-old ]
    then
        sudo mv /opt/yunohost/ihatemoney/venv{-old,}
    fi
}

ynh_abort_if_errors


#----------------------------PRE-UPGRADE MIGRATIONS-----------------------



# MIGRATION: upgrade arg to typed boolean form

if (($is_public != 0)) && (($is_public != 1))
then
    if [ $is_public = "No" ];
    then
        is_public=0
    else
        is_public=1
    fi
    ynh_app_setting_set "$app" is_public "$is_public"
fi



# MIGRATION: Switch to a python3 venv
if [[ "$VENV_PY_VERSION" == 2.7 ]]
then
    install_apt_dependencies
    # Trash py2 venv
    sudo mv ${INSTALL_DIR}/venv ${INSTALL_DIR}/venv-old
    init_virtualenv

    # Clears all cookie-sessions, because py2 & py3 sessions are incompatible
    # Relates https://github.com/lepture/flask-wtf/issues/279 (fix unreleased)
    new_secret_key=`openssl rand -base64 32`
    sudo sed -i "s/SECRET_KEY = \".*\"/SECRET_KEY = \"${new_secret_key}\"/g" /etc/ihatemoney/ihatemoney.cfg
fi



# MIGRATION: minor Py version has changed ? rebuilt venv

# Useful for  Py 3.4 → 3.5, Jessie → Stretch, ynh 2.x → 3.x
if [[ "$VENV_PY_VERSION" != '2.7' ]] && [[ "$VENV_PY_VERSION" != "$SYSTEM_PY_VERSION" ]]
then
    sudo mv ${INSTALL_DIR}/venv ${INSTALL_DIR}/venv-old
    init_virtualenv

    # the static path changed
    configure_nginx "$domain" "$path"
fi

#-------------------------------UPGRADE-------------------------


# Upgrade code and dependencies
pip_install


#-----------------------POST-UPGRADE MIGRATIONS-----------------




# Python-MySQL is no longer maintained and does not support Py3
sudo sed -i "s@'mysql://@'mysql+pymysql://@g" ${ihatemoney_conf_path}



# MIGRATION: Remove old code (from pre-2.x versions, not using pip)

sudo rm -rf ${INSTALL_DIR}/src



# MIGRATION: change the static path (from pre-2.x versions, not using pip)

if grep -q /opt/yunohost/ihatemoney/src/ /etc/nginx/conf.d/${domain}.d/ihatemoney.conf
then
    # the static path changed
    configure_nginx "$domain" "$path"

    # Supervisor no longer change its directory to src/ dir
    configure_supervisor
    supervisorctl update
fi


# MIGRATION: new-style settings

if [ -e /etc/ihatemoney/settings.py ]; then
    # Strip out the no longer used part of the settings
    sudo python2 -c "d = open('/etc/ihatemoney/settings.py').read().replace('try:\n    from settings import *\nexcept ImportError:\n    pass\n', ''); open('/etc/ihatemoney/settings.py', 'w').write(d)"
    # Rename
    sudo mv /etc/ihatemoney/settings.py ${ihatemoney_conf_path}
fi



# MIGRATION: Remove no longer used symlink

# (ihatemoney now read its conf by default from /etc/ihatemoney/ihatemoney.cfg)
sudo rm -f ${INSTALL_DIR}/src/budget/settings.py



#----------------------------FINALIZATION-----------------------

# Everything went ok ? Let's keep this new venv.
sudo rm -rf ${INSTALL_DIR}/venv-old

# Restart backend
sudo supervisorctl restart budget

# Reload nginx conf
sudo systemctl reload nginx