#!/bin/bash set -eu 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 function exit_properly () { set +e # Revert to the old venv if [ -e /opt/yunohost/ihatemoney/venv-old ] then sudo mv /opt/yunohost/ihatemoney/venv{-old,} fi ynh_die "Upgrade script failed, aborted and rolled back the installation" } trap exit_properly ERR #----------------------------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