Factorize NodeJS-specific setup and removal in _common.sh

This commit is contained in:
Antoine Lima 2024-03-10 22:52:45 +01:00
parent 9c6143df27
commit 1510b03634
No known key found for this signature in database
GPG key ID: 5D1E65E3DEB73410
4 changed files with 68 additions and 57 deletions

View file

@ -122,3 +122,48 @@ ynh_system_user_del_group() {
gpasswd -d "$username" "$group"
done
}
ynh_setup_my_nodeapp() {
# Declare an array to define the options of this helper.
local legacy_args=ai
local -A args_array=([a]=app= [i]=install_dir=)
local app
local install_dir
ynh_handle_getopts_args "$@"
ynh_add_systemd_config --service="${app}-nodejs" --template="nodejs.service"
ynh_add_systemd_config --service="${app}-nodejs-watcher" --template="nodejs-watcher.service"
ynh_add_config --template="nodejs-watcher.path" --destination="/etc/systemd/system/${app}-nodejs-watcher.path"
systemctl enable "${app}-nodejs-watcher.path" --quiet
systemctl daemon-reload
yunohost service add "${app}-nodejs" --description="$app NodeJS Server" --log="/var/log/$app-nodejs.log"
ynh_systemd_action --service_name="${app}-nodejs"
ynh_systemd_action --service_name="${app}-nodejs-watcher"
ynh_systemd_action --service_name="${app}-nodejs-watcher.path"
# Add the config manually because yunohost does not support custom nginx confs
ynh_add_config --template="nginx-nodejs.conf" --destination="/etc/nginx/conf.d/$domain.d/$app.conf"
ynh_store_file_checksum --file="/etc/nginx/conf.d/$domain.d/$app.conf"
ynh_systemd_action --service_name=nginx --action=reload
}
ynh_remove_my_nodeapp() {
# Declare an array to define the options of this helper.
local legacy_args=a
local -A args_array=([a]=app=)
local app
ynh_handle_getopts_args "$@"
yunohost service remove "${app}-nodejs"
ynh_remove_systemd_config --service="${app}-nodejs"
ynh_remove_systemd_config --service="${app}-nodejs-watcher"
ynh_secure_remove --file="/etc/systemd/system/${app}-nodejs-watcher.path"
ynh_remove_nodejs
}

View file

@ -69,17 +69,8 @@ then
fi
# Create a dedicated NGINX config
# Use a custom nginx config when using nodejs as it is incompatible with the html/php one
if [ $nodeversion == "none" ]
then
ynh_add_nginx_config
ynh_add_config --template="example-custom-nginx-config.conf" --destination="$nginx_extra_conf_dir/sample.conf"
else
# Add the config manually because yunohost does not support custom nginx confs
ynh_add_config --template="nginx-nodejs.conf" --destination="/etc/nginx/conf.d/$domain.d/$app.conf"
ynh_store_file_checksum --file="/etc/nginx/conf.d/$domain.d/$app.conf"
ynh_systemd_action --service_name=nginx --action=reload
fi
ynh_add_nginx_config
ynh_add_config --template="example-custom-nginx-config.conf" --destination="$nginx_extra_conf_dir/sample.conf"
#=================================================
# CREATE DEDICATED USER
@ -157,19 +148,7 @@ then
ynh_add_config --template="../sources/www/package.json" --destination="$install_dir/www/package.json"
ynh_add_config --template="../sources/www/index.js" --destination="$install_dir/www/index.js"
ynh_add_systemd_config --service="${app}-nodejs" --template="nodejs.service"
ynh_add_systemd_config --service="${app}-nodejs-watcher" --template="nodejs-watcher.service"
ynh_add_config --template="nodejs-watcher.path" --destination="/etc/systemd/system/${app}-nodejs-watcher.path"
systemctl enable "${app}-nodejs-watcher.path" --quiet
systemctl daemon-reload
yunohost service add "${app}-nodejs" --description="$app NodeJS Server" --log="/var/log/$app-nodejs.log"
ynh_add_config --template="nginx-nodejs.conf" --destination="$nginx_extra_conf_dir/nodejs.conf"
ynh_systemd_action --service_name="${app}-nodejs"
ynh_systemd_action --service_name="${app}-nodejs-watcher"
ynh_systemd_action --service_name="${app}-nodejs-watcher.path"
ynh_setup_my_nodeapp --app=$app --install_dir=$install_dir
fi
#=================================================

View file

@ -51,11 +51,10 @@ ynh_remove_fpm_config
#=================================================
ynh_script_progression --message="Removing NodeJS configuration..."
yunohost service remove "${app}-nodejs"
ynh_remove_systemd_config --service="${app}-nodejs"
ynh_remove_systemd_config --service="${app}-nodejs-watcher"
ynh_secure_remove --file="/etc/systemd/system/${app}-nodejs-watcher.path"
if [ $nodeversion != "none" ]
then
ynh_remove_my_nodeapp --app=$app
fi
#=================================================
# END OF SCRIPT

View file

@ -157,34 +157,6 @@ then
ynh_add_fpm_config --usage=$fpm_usage --footprint=$fpm_footprint --phpversion=$phpversion
fi
#=================================================
# NodeJS CONFIGURATION
#=================================================
if [ $nodeversion != "none" ]
then
ynh_script_progression --message="Updating NodeJS..." --weight=3
ynh_install_nodejs --nodejs_version=$nodeversion
ynh_use_nodejs
ynh_add_config --template="../sources/www/package.json" --destination="$install_dir/www/package.json"
ynh_add_config --template="../sources/www/index.js" --destination="$install_dir/www/index.js"
ynh_add_systemd_config --service="${app}-nodejs" --template="nodejs.service"
ynh_add_systemd_config --service="${app}-nodejs-watcher" --template="nodejs-watcher.service"
ynh_add_config --template="nodejs-watcher.path" --destination="/etc/systemd/system/${app}-nodejs-watcher.path"
systemctl enable "${app}-nodejs-watcher.path" --quiet
systemctl daemon-reload
yunohost service add "${app}-nodejs" --description="$app NodeJS Server" --log="/var/log/$app-nodejs.log"
ynh_add_config --template="nginx-nodejs.conf" --destination="$nginx_extra_conf_dir/nodejs.conf"
ynh_systemd_action --service_name="${app}-nodejs"
ynh_systemd_action --service_name="${app}-nodejs-watcher"
ynh_systemd_action --service_name="${app}-nodejs-watcher.path"
fi
#=================================================
# GENERIC FINALIZATION
#=================================================
@ -199,6 +171,22 @@ setfacl -m g:$app:r-x "$install_dir"
setfacl -m g:www-data:r-x "$install_dir"
chmod 750 "$install_dir"
#=================================================
# NodeJS CONFIGURATION
#=================================================
if [ $nodeversion != "none" ]
then
ynh_script_progression --message="Updating NodeJS..." --weight=3
ynh_install_nodejs --nodejs_version=$nodeversion
ynh_use_nodejs
ynh_add_config --template="../sources/www/package.json" --destination="$install_dir/www/package.json"
ynh_add_config --template="../sources/www/index.js" --destination="$install_dir/www/index.js"
ynh_setup_my_nodeapp --app=$app --install_dir=$install_dir
fi
#=================================================
# DEACTIVE MAINTENANCE MODE
#=================================================