#!/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 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 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=$(ynh_string_random 32) ynh_replace_string "SECRET_KEY = \".*\"" "SECRET_KEY = \"${new_secret_key}\"" /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 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 ynh_replace_string "'mysql://" "'mysql+pymysql://" ${ihatemoney_conf_path} # MIGRATION: Remove old code (from pre-2.x versions, not using pip) ynh_secure_remove ${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 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 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) ynh_secure_remove ${INSTALL_DIR}/src/budget/settings.py #----------------------------FINALIZATION----------------------- # Everything went ok ? Let's keep this new venv. ynh_secure_remove ${INSTALL_DIR}/venv-old # Restart backend supervisorctl restart budget # Reload nginx conf systemctl reload nginx