1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/kresus_ynh.git synced 2024-09-03 19:36:10 +02:00
kresus_ynh/scripts/upgrade

200 lines
5.8 KiB
Text
Raw Normal View History

2016-09-09 11:07:28 +02:00
#!/bin/bash
2018-04-14 22:02:50 +02:00
#=================================================
# GENERIC START
#=================================================
# IMPORT GENERIC HELPERS
#=================================================
source _common.sh
source /usr/share/yunohost/helpers
#=================================================
# MANAGE SCRIPT FAILURE
#=================================================
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
# TODO: handle "/home/ynh$app" to final_path migration
2016-09-09 11:07:28 +02:00
app=$YNH_APP_INSTANCE_NAME
2018-04-15 00:27:48 +02:00
domain=$(ynh_app_setting_get $app domain)
path_url=$(ynh_app_setting_get $app path)
final_path=$(ynh_app_setting_get $app final_path)
port=$(ynh_app_setting_get $app port)
#=================================================
# ENSURE DOWNWARD COMPATIBILITY
#=================================================
# If final_path doesn't exist, create it
if [ -z $final_path ]; then
final_path=/var/www/$app
ynh_app_setting_set $app final_path $final_path
fi
2018-08-01 06:31:27 +02:00
if [ -z "/home/ynh$app" ]; then
2018-07-30 22:53:00 +02:00
mv "/home/ynh$app/data" "$final_path/data"
ynh_secure_remove "/home/ynh$app"
fi
2018-04-15 00:27:48 +02:00
#=================================================
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
#=================================================
# Backup the current version of the app
2018-04-15 12:49:57 +02:00
ynh_backup_before_upgrade
ynh_clean_setup () {
2018-04-15 00:27:48 +02:00
# restore it if the upgrade fails
2018-04-15 12:49:57 +02:00
ynh_restore_upgradebackup
}
2018-04-15 00:27:48 +02:00
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
#=================================================
# CHECK THE PATH
#=================================================
# Normalize the URL path syntax
path_url=$(ynh_normalize_url_path $path_url)
#=================================================
# STANDARD UPGRADE STEPS
#=================================================
# INSTALL DEPENDENCIES
#=================================================
ynh_install_app_dependencies dh-autoreconf \
python-pip python-dev python-lxml python-imaging python-virtualenv
#=================================================
# DOWNLOAD, CHECK AND UNPACK SOURCE
#=================================================
# Download, check integrity, uncompress and patch the source from app.src
ynh_setup_source "$final_path"
mkdir -p "$final_path/data"
#=================================================
# NGINX CONFIGURATION
#=================================================
# Create a dedicated nginx config
ynh_add_nginx_config
2018-08-01 06:40:03 +02:00
if [ "$path_url" != "/" ]
then
ynh_replace_string "^#sub_path_only" "" "/etc/nginx/conf.d/$domain.d/$app.conf"
fi
ynh_store_file_checksum "/etc/nginx/conf.d/$domain.d/$app.conf"
2018-04-15 00:27:48 +02:00
#=================================================
# CREATE DEDICATED USER
#=================================================
# Create a system user
ynh_system_user_create "$app"
#=================================================
# SPECIFIC UPGRADE
#=================================================
# Install nodesjs
#=================================================
# install nodejs
ynh_install_nodejs 8
#=================================================
# Install weboob with pip
#=================================================
virtualenv "${final_path}/venv"
(
set +o nounset
source "${final_path}/venv/bin/activate"
set -o nounset
pip install --upgrade pip
pip install weboob html2text simplejson BeautifulSoup PyExecJS
2018-04-15 00:27:48 +02:00
)
#=================================================
# Install Kresus with npm
#=================================================
ynh_use_nodejs
(
cd "$final_path"
chown -R $app: "$final_path"
npm install --production --unsafe-perm
2018-04-15 00:27:48 +02:00
)
#=================================================
# CONFIGURE HASTE
#=================================================
cp ../conf/config.ini "$final_path/config.ini"
ynh_replace_string "__PORT__" "$port" "$final_path/config.ini"
ynh_replace_string "__PATH__" "$path_url" "$final_path/config.ini"
ynh_replace_string "__FINALPATH__" "$final_path" "$final_path/config.ini"
# Calculate and store the config file checksum into the app settings
ynh_store_file_checksum "$final_path/config.ini"
#=================================================
# SETUP SYSTEMD
#=================================================
ynh_replace_string "__NODEJS__" "$nodejs_use_version" ../conf/systemd.service
ynh_replace_string "__ENV_PATH__" "$PATH" ../conf/systemd.service
ynh_replace_string "__NODEPATH__" "$(dirname "$nodejs_path")" ../conf/systemd.service
# Create a dedicated systemd config
ynh_add_systemd_config
#=================================================
# GENERIC FINALIZATION
#=================================================
# SECURE FILES AND DIRECTORIES
#=================================================
2018-08-08 23:28:10 +02:00
# Reset permissions
chown -R root:root "$final_path"
# Set permissions to app files
chown -R "$app":"$app" "$final_path/data/"
chmod -R 750 "$final_path/data/"
# Set permissions to config file
chown "$app" "$final_path/config.ini"
2018-04-15 00:27:48 +02:00
chmod 600 "$final_path/config.ini"
#=================================================
# RELOAD NGINX
#=================================================
2016-09-09 11:07:28 +02:00
2018-04-15 00:27:48 +02:00
service "$app" restart
systemctl reload nginx
#=================================================
# SEND README TO ADMIN
#=================================================
message="
Kresus was updated!
Domain: $domain
Path : $path_url
Config: $final_path/config.ini
Please remember the default behavior of YunoHost when installing a new app is: everyone has access to the app.
This may be an issue for Kresus as it is a personnal tool. Please remember to edit access rights in the YunoHost web administration panel or using command line interface.
Are you facing an issue, want to improve this app or say thank you?
Please open a new issue in this project: https://github.com/YunoHost-Apps/kresus_ynh
"
ynh_send_readme_to_admin "$message"