diff --git a/.gitignore b/.gitignore index 783a4ae..8f144f3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ *~ *.sw[op] +.DS_Store diff --git a/conf/systemd.service b/conf/systemd.service index d90cd4f..6bc1f9e 100644 --- a/conf/systemd.service +++ b/conf/systemd.service @@ -5,11 +5,11 @@ After=network.target [Service] Type=simple Environment=NODE_ENV=production -Environment="__YNH_NODE_LOAD_PATH__" +Environment="PATH=__PATH_WITH_NODEJS__" Environment=NODE_CONFIG_DIR=__INSTALL_DIR__/sources/config User=__APP__ Group=__APP__ -ExecStart=__YNH_NPM__ start +ExecStart=__NODEJS_DIR__/npm start WorkingDirectory=__INSTALL_DIR__/sources/ StandardOutput=syslog StandardError=syslog diff --git a/manifest.toml b/manifest.toml index 7f014e1..253ef34 100644 --- a/manifest.toml +++ b/manifest.toml @@ -20,7 +20,8 @@ code = "https://framagit.org/framasoft/peertube/search-index" fund = "https://framasoft.org/fr/#support" [integration] -yunohost = ">= 11.2" +yunohost = ">= 11.2.18" +helpers_version = "2.1" architectures = "all" multi_instance = true ldap = "not_relevant" @@ -48,6 +49,7 @@ ram.runtime = "2000M" [resources.system_user] [resources.install_dir] + group = "www-data:r-x" [resources.permissions] main.url = "/" diff --git a/scripts/_common.sh b/scripts/_common.sh index db9f4dd..c2be4eb 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -1,35 +1,23 @@ #!/bin/bash #================================================= -# COMMON VARIABLES +# COMMON VARIABLES AND CUSTOM HELPERS #================================================= -NODEJS_VERSION=16 - -#================================================= -# PERSONAL HELPERS -#================================================= +nodejs_version=16 _git_clone_or_pull() { repo_dir="$1" - upstream_repository=$(ynh_read_manifest --manifest_key='upstream.code') - upstream_url=$(ynh_read_manifest --manifest_key='resources.sources.main.url') + upstream_repository=$(ynh_read_manifest + upstream_url=$(ynh_read_manifest upstream_commit=$(echo "$upstream_url" | sed -e "s|^${upstream_repository}/-/archive/\([^/]*\)/.*|\1|") if [ -d "$repo_dir" ]; then - ynh_exec_as "$app" git -C "$repo_dir" fetch --quiet + ynh_exec_as_app git -C "$repo_dir" fetch --quiet else - ynh_exec_as "$app" git clone "$upstream_repository" "$repo_dir" --quiet + ynh_exec_as_app git clone "$upstream_repository" "$repo_dir" --quiet fi - ynh_exec_as "$app" git -C "$repo_dir" checkout "$upstream_commit" --quiet - ynh_exec_as "$app" git -C "$repo_dir" submodule update --init --recursive + ynh_exec_as_app git -C "$repo_dir" checkout "$upstream_commit" --quiet + ynh_exec_as_app git -C "$repo_dir" submodule update --init --recursive } - -#================================================= -# EXPERIMENTAL HELPERS -#================================================= - -#================================================= -# FUTURE OFFICIAL HELPERS -#================================================= diff --git a/scripts/backup b/scripts/backup index 132f64e..62f35ef 100644 --- a/scripts/backup +++ b/scripts/backup @@ -1,38 +1,29 @@ #!/bin/bash -#================================================= -# GENERIC START -#================================================= -# IMPORT GENERIC HELPERS -#================================================= - # Keep this path for calling _common.sh inside the execution's context of backup and restore scripts source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers -#================================================= -# DECLARE DATA AND CONF FILES TO BACKUP -#================================================= -ynh_print_info --message="Declaring files to be backed up..." +ynh_print_info "Declaring files to be backed up..." #================================================= # BACKUP THE APP MAIN DIR #================================================= -ynh_backup --src_path="$install_dir" +ynh_backup "$install_dir" #================================================= # SYSTEM CONFIGURATION #================================================= -ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" +ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf" -ynh_backup --src_path="/etc/logrotate.d/$app" +ynh_backup "/etc/logrotate.d/$app" -ynh_backup --src_path="/etc/systemd/system/$app.service" +ynh_backup "/etc/systemd/system/$app.service" #================================================= # END OF SCRIPT #================================================= -ynh_print_info --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." +ynh_print_info "Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." diff --git a/scripts/change_url b/scripts/change_url index ca645f1..9a952a3 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -1,40 +1,32 @@ #!/bin/bash -#================================================= -# GENERIC STARTING -#================================================= -# IMPORT GENERIC HELPERS -#================================================= - source _common.sh source /usr/share/yunohost/helpers -#================================================= -# STANDARD MODIFICATIONS #================================================= # STOP SYSTEMD SERVICE #================================================= -ynh_script_progression --message="Stopping $app's systemd service..." +ynh_script_progression "Stopping $app's systemd service..." -ynh_systemd_action --service_name=$app --action="stop" --log_path="systemd" --line_match="Stopped $app search index daemon" +ynh_systemctl --service=$app --action="stop" --log_path="systemd" --wait_until="Stopped $app search index daemon" #================================================= # MODIFY URL IN NGINX CONF #================================================= -ynh_script_progression --message="Updating NGINX web server configuration..." +ynh_script_progression "Updating NGINX web server configuration..." -ynh_change_url_nginx_config +ynh_config_change_url_nginx #================================================= # START SYSTEMD SERVICE #================================================= -ynh_script_progression --message="Starting $app's systemd service..." +ynh_script_progression "Starting $app's systemd service..." # Start a systemd service -ynh_systemd_action --service_name="$app" --action="start" --log_path="systemd" --line_match="Server listening on port" +ynh_systemctl --service="$app" --action="start" --log_path="systemd" --wait_until="Server listening on port" #================================================= # END OF SCRIPT #================================================= -ynh_script_progression --message="Change of URL completed for $app" +ynh_script_progression "Change of URL completed for $app" diff --git a/scripts/install b/scripts/install index 618da95..6fc4757 100644 --- a/scripts/install +++ b/scripts/install @@ -1,25 +1,19 @@ #!/bin/bash -#================================================= -# GENERIC START -#================================================= -# IMPORT GENERIC HELPERS -#================================================= - source _common.sh source /usr/share/yunohost/helpers #================================================= # INSTALL NODEJS #================================================= -ynh_script_progression --message="Installing NodeJS..." +ynh_script_progression "Installing NodeJS..." -ynh_install_nodejs --nodejs_version="$NODEJS_VERSION" +ynh_nodejs_install #================================================= # START ELASTICSEARCH #================================================= -ynh_script_progression --message="Starting elasticsearch..." +ynh_script_progression "Starting elasticsearch..." # Fix permissions in case of remove/reinstall chown -R elasticsearch:elasticsearch /var/lib/elasticsearch @@ -30,59 +24,58 @@ systemctl start elasticsearch.service #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= -ynh_script_progression --message="Setting up source files..." +ynh_script_progression "Setting up source files..." _git_clone_or_pull "$install_dir/sources" -chmod -R o-rwx "$install_dir" -chown -R "$app:$app" "$install_dir" - +#REMOVEME? Assuming the install dir is setup using ynh_setup_source, the proper chmod/chowns are now already applied and it shouldn't be necessary to tweak perms | chmod -R o-rwx "$install_dir" +#REMOVEME? Assuming the install dir is setup using ynh_setup_source, the proper chmod/chowns are now already applied and it shouldn't be necessary to tweak perms | chown -R "$app:$app" "$install_dir" #================================================= # BUILDING #================================================= -ynh_script_progression --message="Building..." +ynh_script_progression "Building..." pushd "$install_dir/sources" - ynh_use_nodejs - ynh_exec_as "$app" env "$ynh_node_load_PATH" yarn install --pure-lockfile - ynh_exec_as "$app" mkdir -p "dist" - ynh_exec_as "$app" env "$ynh_node_load_PATH" "$ynh_npm" run build + + ynh_exec_as_app node_load_PATH" yarn install --pure-lockfile + ynh_exec_as_app mkdir -p "dist" + ynh_exec_as_app node_load_PATH" npm run build popd #================================================= # ADD A CONFIGURATION #================================================= -ynh_script_progression --message="Adding a config file..." +ynh_script_progression "Adding a config file..." -ynh_add_config --template="default.yaml" --destination="$install_dir/sources/config/production.yaml" +ynh_config_add --template="default.yaml" --destination="$install_dir/sources/config/production.yaml" -chmod 400 "$install_dir/sources/config/production.yaml" -chown "$app:$app" "$install_dir/sources/config/production.yaml" +#REMOVEME? Assuming the file is setup using ynh_config_add, the proper chmod/chowns are now already applied and it shouldn't be necessary to tweak perms | chmod 400 "$install_dir/sources/config/production.yaml" +#REMOVEME? Assuming the file is setup using ynh_config_add, the proper chmod/chowns are now already applied and it shouldn't be necessary to tweak perms | chown "$app:$app" "$install_dir/sources/config/production.yaml" #================================================= # SYSTEM CONFIGURATION #================================================= -ynh_script_progression --message="Adding system configurations related to $app..." --weight=1 +ynh_script_progression "Adding system configurations related to $app..." # Create a dedicated NGINX config -ynh_add_nginx_config +ynh_config_add_nginx # Create a dedicated systemd config -ynh_add_systemd_config +ynh_config_add_systemd yunohost service add "$app" --description="$app search index daemon" # Use logrotate to manage application logfile(s) -ynh_use_logrotate +ynh_config_add_logrotate #================================================= # START SYSTEMD SERVICE #================================================= -ynh_script_progression --message="Starting $app's systemd service..." +ynh_script_progression "Starting $app's systemd service..." # Start a systemd service -ynh_systemd_action --service_name="$app" --action="start" --log_path="systemd" --line_match="Server listening on port" +ynh_systemctl --service="$app" --action="start" --log_path="systemd" --wait_until="Server listening on port" #================================================= # END OF SCRIPT #================================================= -ynh_script_progression --message="Installation of $app completed" +ynh_script_progression "Installation of $app completed" diff --git a/scripts/remove b/scripts/remove index 97ba2dc..f26b8de 100644 --- a/scripts/remove +++ b/scripts/remove @@ -1,35 +1,29 @@ #!/bin/bash -#================================================= -# GENERIC START -#================================================= -# IMPORT GENERIC HELPERS -#================================================= - source _common.sh source /usr/share/yunohost/helpers #================================================= # REMOVE SYSTEM CONFIGURATIONS #================================================= -ynh_script_progression --message="Removing system configurations related to $app..." --weight=1 +ynh_script_progression "Removing system configurations related to $app..." # 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 +if ynh_hide_warnings yunohost service status "$app" >/dev/null; then yunohost service remove "$app" fi # Remove the dedicated systemd config -ynh_remove_systemd_config +ynh_config_remove_systemd # Remove the app-specific logrotate config -ynh_remove_logrotate +ynh_config_remove_logrotate # Remove the dedicated NGINX config -ynh_remove_nginx_config +ynh_config_remove_nginx #================================================= # END OF SCRIPT #================================================= -ynh_script_progression --message="Removal of $app completed" +ynh_script_progression "Removal of $app completed" diff --git a/scripts/restore b/scripts/restore index adcb874..2cf62f7 100644 --- a/scripts/restore +++ b/scripts/restore @@ -1,11 +1,5 @@ #!/bin/bash -#================================================= -# GENERIC START -#================================================= -# IMPORT GENERIC HELPERS -#================================================= - # Keep this path for calling _common.sh inside the execution's context of backup and restore scripts source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers @@ -13,14 +7,14 @@ source /usr/share/yunohost/helpers #================================================= # INSTALL NODEJS #================================================= -ynh_script_progression --message="Reinstalling NodeJS..." +ynh_script_progression "Reinstalling NodeJS..." -ynh_install_nodejs --nodejs_version="$NODEJS_VERSION" +ynh_nodejs_install #================================================= # START ELASTICSEARCH #================================================= -ynh_script_progression --message="Starting elasticsearch..." +ynh_script_progression "Starting elasticsearch..." systemctl enable elasticsearch.service --quiet systemctl start elasticsearch.service @@ -28,37 +22,36 @@ systemctl start elasticsearch.service #================================================= # RESTORE THE APP MAIN DIR #================================================= -ynh_script_progression --message="Restoring the app main directory..." +ynh_script_progression "Restoring the app main directory..." -ynh_restore_file --origin_path="$install_dir" - -chmod -R o-rwx "$install_dir" -chown -R "$app:$app" "$install_dir" +ynh_restore "$install_dir" +#REMOVEME? Assuming the install dir is setup using ynh_setup_source, the proper chmod/chowns are now already applied and it shouldn't be necessary to tweak perms | chmod -R o-rwx "$install_dir" +#REMOVEME? Assuming the install dir is setup using ynh_setup_source, the proper chmod/chowns are now already applied and it shouldn't be necessary to tweak perms | chown -R "$app:$app" "$install_dir" #================================================= # RESTORE SYSTEM CONFIGURATIONS #================================================= -ynh_script_progression --message="Restoring system configurations related to $app..." --weight=1 +ynh_script_progression "Restoring system configurations related to $app..." -ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" +ynh_restore "/etc/nginx/conf.d/$domain.d/$app.conf" -ynh_restore_file --origin_path="/etc/systemd/system/$app.service" +ynh_restore "/etc/systemd/system/$app.service" systemctl enable "$app.service" --quiet yunohost service add "$app" --description="$app search index daemon" -ynh_restore_file --origin_path="/etc/logrotate.d/$app" +ynh_restore "/etc/logrotate.d/$app" #================================================= # START SYSTEMD SERVICE #================================================= -ynh_script_progression --message="Reloading NGINX web server and $app's service..." --weight=1 +ynh_script_progression "Reloading NGINX web server and $app's service..." -ynh_systemd_action --service_name="$app" --action="start" --log_path="systemd" --line_match="Server listening on port" +ynh_systemctl --service="$app" --action="start" --log_path="systemd" --wait_until="Server listening on port" -ynh_systemd_action --service_name=nginx --action=reload +ynh_systemctl --service=nginx --action=reload #================================================= # END OF SCRIPT #================================================= -ynh_script_progression --message="Restoration completed for $app" +ynh_script_progression "Restoration completed for $app" diff --git a/scripts/upgrade b/scripts/upgrade index 44cc1aa..b176b45 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -1,32 +1,26 @@ #!/bin/bash -#================================================= -# GENERIC START -#================================================= -# IMPORT GENERIC HELPERS -#================================================= - source _common.sh source /usr/share/yunohost/helpers #================================================= # STOP SYSTEMD SERVICE #================================================= -ynh_script_progression --message="Stopping $app's systemd service..." +ynh_script_progression "Stopping $app's systemd service..." -ynh_systemd_action --service_name="$app" --action="stop" --log_path="systemd" --line_match="Stopped $app search index daemon" +ynh_systemctl --service="$app" --action="stop" --log_path="systemd" --wait_until="Stopped $app search index daemon" #================================================= # INSTALL NODEJS #================================================= -ynh_script_progression --message="Updating NodeJS..." +ynh_script_progression "Updating NodeJS..." -ynh_install_nodejs --nodejs_version="$NODEJS_VERSION" +ynh_nodejs_install #================================================= # START ELASTICSEARCH #================================================= -ynh_script_progression --message="Starting elasticsearch..." +ynh_script_progression "Starting elasticsearch..." systemctl enable elasticsearch.service --quiet systemctl start elasticsearch.service @@ -34,7 +28,7 @@ systemctl start elasticsearch.service #================================================= # ENSURE DOWNWARD COMPATIBILITY #================================================= -ynh_script_progression --message="Ensuring downward compatibility..." +ynh_script_progression "Ensuring downward compatibility..." # Move git repository one step lower if [ -d "$install_dir/.git" ]; then @@ -44,65 +38,63 @@ if [ -d "$install_dir/.git" ]; then fi # Fix upgrade from 0.0.1.2022.06.03~ynh1 -chmod 750 "$install_dir" -chmod -R o-rwx "$install_dir" -chown -R "$app:$app" "$install_dir" - +#REMOVEME? Assuming the install dir is setup using ynh_setup_source, the proper chmod/chowns are now already applied and it shouldn't be necessary to tweak perms | chmod 750 "$install_dir" +#REMOVEME? Assuming the install dir is setup using ynh_setup_source, the proper chmod/chowns are now already applied and it shouldn't be necessary to tweak perms | chmod -R o-rwx "$install_dir" +#REMOVEME? Assuming the install dir is setup using ynh_setup_source, the proper chmod/chowns are now already applied and it shouldn't be necessary to tweak perms | chown -R "$app:$app" "$install_dir" #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= -ynh_script_progression --message="Upgrading source files..." +ynh_script_progression "Upgrading source files..." _git_clone_or_pull "$install_dir/sources" -chmod -R o-rwx "$install_dir" -chown -R "$app:$app" "$install_dir" - +#REMOVEME? Assuming the install dir is setup using ynh_setup_source, the proper chmod/chowns are now already applied and it shouldn't be necessary to tweak perms | chmod -R o-rwx "$install_dir" +#REMOVEME? Assuming the install dir is setup using ynh_setup_source, the proper chmod/chowns are now already applied and it shouldn't be necessary to tweak perms | chown -R "$app:$app" "$install_dir" #================================================= # BUILDING #================================================= -ynh_script_progression --message="Building..." +ynh_script_progression "Building..." pushd "$install_dir/sources" - ynh_use_nodejs - ynh_exec_as "$app" env "$ynh_node_load_PATH" yarn install --pure-lockfile - ynh_exec_as "$app" mkdir -p "dist" - ynh_exec_as "$app" env "$ynh_node_load_PATH" "$ynh_npm" run build + + ynh_exec_as_app node_load_PATH" yarn install --pure-lockfile + ynh_exec_as_app mkdir -p "dist" + ynh_exec_as_app node_load_PATH" npm run build popd #================================================= # UPDATE A CONFIG FILE #================================================= -ynh_script_progression --message="Updating a config file..." +ynh_script_progression "Updating a config file..." -ynh_add_config --template="default.yaml" --destination="$install_dir/sources/config/production.yaml" +ynh_config_add --template="default.yaml" --destination="$install_dir/sources/config/production.yaml" -chmod 400 "$install_dir/sources/config/production.yaml" -chown "$app:$app" "$install_dir/sources/config/production.yaml" +#REMOVEME? Assuming the file is setup using ynh_config_add, the proper chmod/chowns are now already applied and it shouldn't be necessary to tweak perms | chmod 400 "$install_dir/sources/config/production.yaml" +#REMOVEME? Assuming the file is setup using ynh_config_add, the proper chmod/chowns are now already applied and it shouldn't be necessary to tweak perms | chown "$app:$app" "$install_dir/sources/config/production.yaml" #================================================= # REAPPLY SYSTEM CONFIGURATIONS #================================================= -ynh_script_progression --message="Upgrading system configurations related to $app..." --weight=1 +ynh_script_progression "Upgrading system configurations related to $app..." # Create a dedicated NGINX config -ynh_add_nginx_config +ynh_config_add_nginx # Create a dedicated systemd config -ynh_add_systemd_config +ynh_config_add_systemd yunohost service add "$app" --description="$app search index daemon" # Use logrotate to manage app-specific logfile(s) -ynh_use_logrotate --non-append +ynh_config_add_logrotate #================================================= # START SYSTEMD SERVICE #================================================= -ynh_script_progression --message="Starting $app's systemd service..." +ynh_script_progression "Starting $app's systemd service..." -ynh_systemd_action --service_name="$app" --action="start" --log_path="systemd" --line_match="Server listening on port" +ynh_systemctl --service="$app" --action="start" --log_path="systemd" --wait_until="Server listening on port" #================================================= # END OF SCRIPT #================================================= -ynh_script_progression --message="Upgrade of $app completed" +ynh_script_progression "Upgrade of $app completed"