1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/ihatemoney_ynh.git synced 2024-09-03 19:26:15 +02:00
ihatemoney_ynh/scripts/upgrade
Jocelyn Delalande 321d6cb2d9 Use ynh helpers for error handling
Instead of doing it by hand.

Also we now rely on the fact ynh automatically runs uninstall script if the
install fails. So no more need for manual cleanup.
2018-12-18 18:28:00 +01:00

133 lines
3.2 KiB
Bash
Executable file

#!/bin/bash
app=$YNH_APP_INSTANCE_NAME
# The main logic is to
# - install in a src-new folder
# - upgrade dependencies
# - if everything OK, rename src-new to src
# Installation paths
INSTALL_DIR=/opt/yunohost/ihatemoney
PIP=${INSTALL_DIR}/venv/bin/pip
# 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//')
# 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
#-------------------------------UPGRADE-------------------------
# Upgrade code and dependencies
sudo ${PIP} install --upgrade 'gunicorn>=19.3.0' PyMySQL 'ihatemoney>=2,<3'
#-----------------------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