From 2198cef8bebcd4ab891304ad1a94de41455a105b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Pi=C3=A9dallu?= Date: Sat, 27 Jan 2024 13:52:17 +0100 Subject: [PATCH] Coding style, cleanup --- scripts/_common.sh | 16 +++++++++++++ scripts/backup | 12 ++++------ scripts/install | 58 +++++++++++++++++---------------------------- scripts/remove | 23 +++++------------- scripts/restore | 50 ++++++++++++++------------------------- scripts/upgrade | 59 +++++++++++++++++----------------------------- 6 files changed, 87 insertions(+), 131 deletions(-) diff --git a/scripts/_common.sh b/scripts/_common.sh index 489b6ef..542ddd1 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -1,5 +1,21 @@ #!/bin/bash +#================================================= +# COMMON VARIABLES +#================================================= + nodejs_version=20 facilmap_version=3.4.0 + +#================================================= +# PERSONAL HELPERS +#================================================= + +#================================================= +# EXPERIMENTAL HELPERS +#================================================= + +#================================================= +# FUTURE OFFICIAL HELPERS +#================================================= diff --git a/scripts/backup b/scripts/backup index e007e63..c2c3a41 100755 --- a/scripts/backup +++ b/scripts/backup @@ -22,24 +22,20 @@ ynh_print_info --message="Declaring files to be backed up..." ynh_backup --src_path="$install_dir" #================================================= -# BACKUP THE NGINX CONFIGURATION +# SYSTEM CONFIGURATION #================================================= ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" -#================================================= -# SPECIFIC BACKUP -#================================================= -# BACKUP LOGROTATE -#================================================= +ynh_backup --src_path="/etc/systemd/system/$app.service" ynh_backup --src_path="/etc/logrotate.d/$app" #================================================= -# BACKUP SYSTEMD +# BACKUP VARIOUS FILES #================================================= -ynh_backup --src_path="/etc/systemd/system/$app.service" +ynh_backup --src_path="/var/log/$app/" #================================================= # BACKUP THE MYSQL DATABASE diff --git a/scripts/install b/scripts/install index c287938..3f3beb9 100755 --- a/scripts/install +++ b/scripts/install @@ -12,81 +12,65 @@ source /usr/share/yunohost/helpers #================================================= # INSTALL DEPENDENCIES #================================================= -ynh_script_progression --message="Installing dependencies..." --weight=6 +ynh_script_progression --message="Installing NodeJS..." --weight=6 ynh_install_nodejs --nodejs_version=$nodejs_version #================================================= # CREATE A MYSQL DATABASE #================================================= -ynh_script_progression --message="Creating a MySQL database..." --weight=2 +ynh_script_progression --message="Configuring a MySQL database..." --weight=2 -echo "ALTER DATABASE $db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci" | ynh_mysql_connect_as --user=$db_user --password=$db_pwd --database=$db_name - -#================================================= -# NGINX CONFIGURATION -#================================================= -ynh_script_progression --message="Configuring NGINX web server..." --weight=2 - -# Create a dedicated NGINX config -ynh_add_nginx_config +ynh_mysql_execute_as_root --database="$db_name" --sql="ALTER DATABASE $db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci" #================================================= # SPECIFIC SETUP #================================================= # BUILD NODE DEPENDENCIES #================================================= -ynh_script_progression --message="Building node dependencies..." --weight=20 +ynh_script_progression --message="Building with NodeJS..." --weight=20 -mkdir -p $install_dir -chown -R $app $install_dir - -pushd $install_dir - ynh_exec_as $app "$ynh_node_load_PATH" $ynh_npm install --prefix "$install_dir" -g facilmap-server@"$facilmap_version" 2>/dev/null +pushd "$install_dir" + ynh_exec_as $app "$ynh_node_load_PATH" "$ynh_npm" install --prefix "$install_dir" -g facilmap-server@"$facilmap_version" 2>/dev/null popd chmod 750 "$install_dir" chmod -R o-rwx "$install_dir" -chown -R $app:www-data "$install_dir" - -#================================================= -# SETUP SYSTEMD -#================================================= -ynh_script_progression --message="Configuring a systemd service..." --weight=2 - -# Create a dedicated systemd config -ynh_add_systemd_config +chown -R "$app:www-data" "$install_dir" #================================================= # ADD A CONFIGURATION #================================================= ynh_script_progression --message="Adding configuration..." --weight=2 -mkdir -p $install_dir/etc +mkdir -p "$install_dir/etc" ynh_add_config --template="../conf/config.env" --destination="$install_dir/etc/facilmap.env" +chown -R "$app:www-data" "$install_dir/etc" +chmod 400 "$install_dir/etc/facilmap.env" + #================================================= -# SETUP LOGROTATE +# SYSTEM CONFIGURATION #================================================= -ynh_script_progression --message="Configuring log rotation..." --weight=1 +ynh_script_progression --message="Adding system configurations related to $app..." --weight=1 + +# Create a dedicated NGINX config +ynh_add_nginx_config + +# Create a dedicated systemd config +ynh_add_systemd_config +yunohost service add "$app" --description="Collaborative maps and routing" --log="/var/log/$app/$app.log" # Use logrotate to manage application logfile(s) ynh_use_logrotate -#================================================= -# INTEGRATE SERVICE IN YUNOHOST -#================================================= -ynh_script_progression --message="Integrating service in YunoHost..." --weight=1 - -yunohost service add $app --description="Collaborative maps and routing" --log="/var/log/$app/$app.log" - #================================================= # START SYSTEMD SERVICE #================================================= ynh_script_progression --message="Starting a systemd service..." --weight=7 # Start a systemd service -ynh_systemd_action --service_name=$app --action="start" --log_path="systemd" --line_match="Server started" +ynh_systemd_action --service_name="$app" --action="start" --log_path="systemd" --line_match="Server started" #================================================= # END OF SCRIPT diff --git a/scripts/remove b/scripts/remove index 7ddeaab..7106b19 100755 --- a/scripts/remove +++ b/scripts/remove @@ -10,34 +10,23 @@ source _common.sh source /usr/share/yunohost/helpers #================================================= -# STANDARD REMOVE -#================================================= -# REMOVE SERVICE INTEGRATION IN YUNOHOST +# REMOVE SYSTEM CONFIGURATIONS #================================================= +ynh_script_progression --message="Removing system configurations related to $app..." --weight=1 # Remove the service from the list of services known by YunoHost (added from `yunohost service add`) -if ynh_exec_warn_less yunohost service status $app >/dev/null -then - ynh_script_progression --message="Removing $app service integration..." --weight=2 - yunohost service remove $app +if ynh_exec_warn_less yunohost service status "$app" >/dev/null; then + yunohost service remove "$app" fi -#================================================= -# STOP AND REMOVE SERVICE -#================================================= -ynh_script_progression --message="Stopping and removing the systemd service..." --weight=2 - -# Remove the dedicated systemd config ynh_remove_systemd_config -ynh_remove_nodejs - -# Remove the dedicated NGINX config ynh_remove_nginx_config -# Remove the app-specific logrotate config ynh_remove_logrotate +ynh_remove_nodejs + #================================================= # END OF SCRIPT #================================================= diff --git a/scripts/restore b/scripts/restore index 6cf7b29..059bdc2 100755 --- a/scripts/restore +++ b/scripts/restore @@ -11,12 +11,11 @@ source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers #================================================= -# STANDARD RESTORATION STEPS -#================================================= -# RESTORE THE NGINX CONFIGURATION +# REINSTALL DEPENDENCIES #================================================= +ynh_script_progression --message="Reinstalling NodeJS..." --weight=10 -ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" +ynh_install_nodejs --nodejs_version="$nodejs_version" #================================================= # RESTORE THE APP MAIN DIR @@ -27,54 +26,41 @@ ynh_restore_file --origin_path="$install_dir" chmod 750 "$install_dir" chmod -R o-rwx "$install_dir" -chown -R $app:www-data "$install_dir" - -#================================================= -# SPECIFIC RESTORATION -#================================================= -# REINSTALL DEPENDENCIES -#================================================= -#REMOVEME? ynh_script_progression --message="Reinstalling dependencies..." --weight=10 - -# Define and install dependencies -ynh_install_nodejs --nodejs_version=$nodejs_version +chown -R "$app:www-data" "$install_dir" #================================================= # RESTORE THE MYSQL DATABASE #================================================= -ynh_script_progression --message="Restoring the MySQL database..." --weight=5 +ynh_script_progression --message="Restoring the MySQL database..." --weight=1 -echo "ALTER DATABASE $db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci" -ynh_mysql_connect_as --user=$db_user --password=$db_pwd --database=$db_name < ./db.sql +# echo "ALTER DATABASE $db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci" +ynh_mysql_connect_as --user="$db_user" --password="$db_pwd" --database="$db_name" < ./db.sql #================================================= -# RESTORE SYSTEMD +# RESTORE SYSTEM CONFIGURATIONS #================================================= -ynh_script_progression --message="Restoring the systemd configuration..." --weight=2 +ynh_script_progression --message="Restoring system configurations related to $app..." --weight=1 + +ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" ynh_restore_file --origin_path="/etc/systemd/system/$app.service" -systemctl enable $app.service --quiet +systemctl enable "$app.service" --quiet +yunohost service add "$app" --description="Collaborative maps and routing" --log="/var/log/$app/$app.log" + +ynh_restore_file --origin_path="/etc/logrotate.d/$app" #================================================= -# INTEGRATE SERVICE IN YUNOHOST +# RESTORE VARIOUS FILES #================================================= -ynh_script_progression --message="Integrating service in YunoHost..." --weight=1 -yunohost service add $app --description="Collaborative maps and routing" --log="/var/log/$app/$app.log" +ynh_restore_file --origin_path="/var/log/$app/" #================================================= # START SYSTEMD SERVICE #================================================= ynh_script_progression --message="Starting a systemd service..." --weight=5 -ynh_systemd_action --service_name=$app --action="start" --log_path="systemd" --line_match="Server started" - -#================================================= -# RESTORE THE LOGROTATE CONFIGURATION -#================================================= -ynh_script_progression --message="Restoring logrotate configuration..." --weight=1 - -ynh_restore_file --origin_path="/etc/logrotate.d/$app" +ynh_systemd_action --service_name="$app" --action="start" --log_path="systemd" --line_match="Server started" #================================================= # GENERIC FINALIZATION diff --git a/scripts/upgrade b/scripts/upgrade index 5fdcfe5..0c5bab3 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -10,10 +10,11 @@ source _common.sh source /usr/share/yunohost/helpers #================================================= -# CHECK VERSION +# UPGRADE DEPENDENCIES #================================================= +ynh_script_progression --message="Upgrading NodeJS..." --weight=10 -upgrade_type=$(ynh_check_app_version_changed) +ynh_install_nodejs --nodejs_version="$nodejs_version" #================================================= # STANDARD UPGRADE STEPS @@ -24,16 +25,6 @@ ynh_script_progression --message="Stopping a systemd service..." --weight=1 ynh_systemd_action --service_name=$app --action="stop" --log_path="systemd" -#================================================= -# NGINX CONFIGURATION -#================================================= -ynh_script_progression --message="Upgrading NGINX web server configuration..." --weight=1 - -# Create a dedicated NGINX config -ynh_add_nginx_config - -ynh_install_nodejs --nodejs_version=$nodejs_version - #================================================= # SPECIFIC UPGRADE #================================================= @@ -41,21 +32,13 @@ ynh_install_nodejs --nodejs_version=$nodejs_version #================================================= ynh_script_progression --message="Install $app..." --weight=20 -if [ "$upgrade_type" == "UPGRADE_APP" ] -then - chown -R $app $install_dir - pushd $install_dir - ynh_exec_as $app "$ynh_node_load_PATH" $ynh_npm install --prefix "$install_dir" -g facilmap-server@"$facilmap_version" 2>/dev/null - popd -fi +pushd $install_dir + ynh_exec_as "$app" "$ynh_node_load_PATH" "$ynh_npm" install --prefix "$install_dir" -g facilmap-server@"$facilmap_version" 2>/dev/null +popd -#================================================= -# SETUP SYSTEMD -#================================================= -ynh_script_progression --message="Upgrading systemd configuration..." --weight=1 - -# Create a dedicated systemd config -ynh_add_systemd_config +chmod 750 "$install_dir" +chmod -R o-rwx "$install_dir" +chown -R "$app:www-data" "$install_dir" #================================================= # UPDATE A CONFIG FILE @@ -65,6 +48,9 @@ ynh_script_progression --message="Updating config files..." --weight=2 mkdir -p "$install_dir/etc" ynh_add_config --template="../conf/config.env" --destination="$install_dir/etc/facilmap.env" +chown -R "$app:www-data" "$install_dir/etc" +chmod 400 "$install_dir/etc/facilmap.env" + #================================================= # GENERIC FINALIZATION #================================================= @@ -78,26 +64,25 @@ chmod -R o-rwx "$install_dir" chown -R $app:www-data "$install_dir" #================================================= -# SETUP LOGROTATE +# REAPPLY SYSTEM CONFIGURATIONS #================================================= -ynh_script_progression --message="Upgrading logrotate configuration..." --weight=1 +ynh_script_progression --message="Upgrading system configurations related to $app..." --weight=1 + +# Create a dedicated NGINX config +ynh_add_nginx_config + +# Create a dedicated systemd config +ynh_add_systemd_config +yunohost service add "$app" --description="Collaborative maps and routing" --log="/var/log/$app/$app.log" # Use logrotate to manage app-specific logfile(s) ynh_use_logrotate --non-append - -#================================================= -# INTEGRATE SERVICE IN YUNOHOST -#================================================= -ynh_script_progression --message="Integrating service in YunoHost..." --weight=1 - -yunohost service add $app --description="Collaborative maps and routing" --log="/var/log/$app/$app.log" - #================================================= # START SYSTEMD SERVICE #================================================= ynh_script_progression --message="Starting a systemd service..." --weight=5 -ynh_systemd_action --service_name=$app --action="start" --log_path="systemd" --line_match="Server started" +ynh_systemd_action --service_name="$app" --action="start" --log_path="systemd" --line_match="Server started" #================================================= # END OF SCRIPT