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/install
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

100 lines
2.4 KiB
Bash
Executable file

#!/bin/bash
# Source YunoHost helpers
source /usr/share/yunohost/helpers
# Retrieve arguments
domain=$YNH_APP_ARG_DOMAIN
path=$YNH_APP_ARG_PATH
is_public=$YNH_APP_ARG_IS_PUBLIC
app=ihatemoney
# Source local utils
source _common.sh
path=$(ynh_normalize_url_path $path)
# Database settings
db_pwd=$(ynh_string_random)
db_name=$app
db_user=$app
# Constant arguments
db_user=ihatemoney
secret_key=`openssl rand -base64 32`
mails_sender="no-reply@${domain}"
ynh_abort_if_errors
ynh_webpath_register $app $domain $path
# Configure database
ynh_mysql_create_db "$db_name" "$db_user" "$db_pwd"
ynh_app_setting_set $app mysqlpwd $db_pwd
# Save app settings
ynh_app_setting_set $app domain $domain
ynh_app_setting_set $app is_public "$is_public"
install_apt_dependencies
create_unix_user
# Prepare venv
init_virtualenv
sudo /opt/yunohost/ihatemoney/venv/bin/pip install \
'gunicorn>=19.3.0' \
'PyMySQL>=0.9,<0.10' \
'ihatemoney>=2,<3' \
create_system_dirs
# Configure gunicorn
sudo install -o ihatemoney -g ihatemoney -m 644 \
../conf/gunicorn.conf.py /etc/ihatemoney/gunicorn.conf.py
# Configure supervisor
configure_supervisor
# In case it was already installed before,
# so that it picks /etc/supervisor/conf.d/ihatemoney.conf:
supervisorctl update
sudo yunohost service add supervisor
# Configure ihatemoney
sed -i "s@MY_SECRET_KEY@$secret_key@" ../conf/ihatemoney.cfg
sed -i "s/MY_EMAIL/$mails_sender/" ../conf/ihatemoney.cfg
sed -i "s@MY_MYSQL_PW@$db_pwd@" ../conf/ihatemoney.cfg
sed -i "s@MY_PATH@$path@" ../conf/ihatemoney.cfg
# Remove the conf directive if served at root
sed -i "/APPLICATION_ROOT='\/'/d" ../conf/ihatemoney.cfg
sudo install -o ihatemoney -g ihatemoney -m 640 \
../conf/ihatemoney.cfg /etc/ihatemoney/ihatemoney.cfg
# If app is public, add url to SSOWat conf as skipped_uris
if [[ "$is_public" -ne 0 ]];
then
ynh_app_setting_set $app unprotected_uris "/"
fi
# Configure Nginx
configure_nginx "$domain" "$path"
# Start backend
sudo systemctl start supervisor
# Reconfigure sso
sudo yunohost app ssowatconf
# Wait that gunicorn is ready to consider the install finished, that is to
# avoid HTTP 502 right after installation
for i in `seq 1 120`
do
test -S /tmp/budget.gunicorn.sock && break
sleep 1
done
# If socket not ready after 2 minutes waiting, ihatemoney will not work.
test -S /tmp/budget.gunicorn.sock || exit_properly
sudo systemctl reload nginx