mirror of
https://github.com/YunoHost-Apps/ihatemoney_ynh.git
synced 2024-09-03 19:26:15 +02:00
321d6cb2d9
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.
133 lines
3.2 KiB
Bash
Executable file
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
|