Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[autopatch] Automatic patch attempt for helpers 2.1 #95

Open
wants to merge 2 commits into
base: testing
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions manifest.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ admindoc = "https://docs.joinplu.me/"
code = "https://github.com/Plume-org/Plume"

[integration]
yunohost = ">= 11.1.19"
yunohost = ">= 11.2.18"
helpers_version = "2.1"
architectures = ["amd64", "arm64"]
multi_instance = true
ldap = true
Expand All @@ -40,8 +41,8 @@ ram.runtime = "50M"
[install.password]
type = "password"

[install.name]
ask.en = "Choose a name for your Plume instance"
[install.title]
ask.en = "Choose a nom for your Plume instance"
ask.fr = "Choisissez un nom pour votre instance Plume"
type = "string"
example = "My blog"
Expand Down
14 changes: 1 addition & 13 deletions scripts/_common.sh
Original file line number Diff line number Diff line change
@@ -1,17 +1,5 @@
#!/bin/bash

#=================================================
# COMMON VARIABLES
#=================================================

#=================================================
# PERSONAL HELPERS
#=================================================

#=================================================
# EXPERIMENTAL HELPERS
#=================================================

#=================================================
# FUTURE OFFICIAL HELPERS
# COMMON VARIABLES AND CUSTOM HELPERS
#=================================================
36 changes: 8 additions & 28 deletions scripts/backup
Original file line number Diff line number Diff line change
@@ -1,55 +1,35 @@
#!/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"

#=================================================
# BACKUP THE NGINX CONFIGURATION
#=================================================

ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf"
ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf"

#=================================================
# SPECIFIC BACKUP
#=================================================
# BACKUP LOGROTATE
#=================================================

ynh_backup --src_path="/etc/logrotate.d/$app"

#=================================================
# BACKUP SYSTEMD
#=================================================
ynh_backup "/etc/logrotate.d/$app"

ynh_backup --src_path="/etc/systemd/system/$app.service"
ynh_backup "/etc/systemd/system/$app.service"

#=================================================
# BACKUP THE POSTGRESQL DATABASE
#=================================================
ynh_print_info --message="Backing up the PostgreSQL database..."
ynh_print_info "Backing up the PostgreSQL database..."

ynh_psql_dump_db --database="$db_name" > db.sql
ynh_psql_dump_db > db.sql

#=================================================
# 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)."
37 changes: 12 additions & 25 deletions scripts/change_url
Original file line number Diff line number Diff line change
@@ -1,56 +1,43 @@
#!/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 a systemd service..."
ynh_script_progression "Stopping $app's systemd service..."

ynh_systemd_action --service_name=$app --action="stop" --log_path="systemd" --line_match="Stopped plume"
ynh_systemctl --service=$app --action="stop" --log_path="systemd" --wait_until="Stopped plume"

#=================================================
# 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

#=================================================
# SPECIFIC MODIFICATIONS
#=================================================
# MODIFY A CONFIG FILE
#=================================================
ynh_script_progression --message="Modifying a config file..."
ynh_script_progression "Updating configuration..."

config_file="$install_dir/$app/.env"
ynh_backup_if_checksum_is_different --file=$config_file
ynh_replace_string --match_string="$old_domain" --replace_string="$new_domain" --target_file=$config_file

# Recalculate and store the checksum of the file for the next upgrade.
ynh_store_file_checksum --file=$config_file
ynh_backup_if_checksum_is_different $config_file
ynh_replace --match="$old_domain" --replace="$new_domain" --file=$config_file

ynh_store_file_checksum $config_file

#=================================================
# GENERIC FINALISATION
#=================================================
# START SYSTEMD SERVICE
#=================================================
ynh_script_progression --message="Starting a 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="Started plume"
ynh_systemctl --service=$app --action="start" --log_path="systemd" --wait_until="Started plume"

#=================================================
# END OF SCRIPT
#=================================================

ynh_script_progression --message="Change of URL completed for $app"
ynh_script_progression "Change of URL completed for $app"
72 changes: 22 additions & 50 deletions scripts/install
Original file line number Diff line number Diff line change
@@ -1,11 +1,5 @@
#!/bin/bash

#=================================================
# GENERIC START
#=================================================
# IMPORT GENERIC HELPERS
#=================================================

source _common.sh
source /usr/share/yunohost/helpers

Expand All @@ -19,113 +13,91 @@ secret_key=$(ynh_string_random --length=32 | base64)
#=================================================
# STORE SETTINGS FROM MANIFEST
#=================================================
ynh_script_progression --message="Storing installation settings..."
ynh_script_progression "Storing installation settings..."

ynh_app_setting_set --app=$app --key=admin_email --value=$admin_email
ynh_app_setting_set --app=$app --key=secret_key --value=$secret_key
ynh_app_setting_set --key=admin_email --value=$admin_email
ynh_app_setting_set --key=secret_key --value=$secret_key

#=================================================
# DOWNLOAD, CHECK AND UNPACK SOURCE
#=================================================
ynh_script_progression --message="Setting up source files..."
ynh_script_progression "Setting up source files..."

# Download, check integrity, uncompress and patch the source from app.src
ynh_setup_source --dest_dir="$install_dir/$app"

# Create the media directory, where uploads will be stored
mkdir -p $install_dir/media

# Create the cargo directory
mkdir -p $install_dir/.cargo/bin

# Move binaries
mv $install_dir/$app/bin/* $install_dir/.cargo/bin/
chmod +x $install_dir/.cargo/bin/*

# Remove empty bin directory
ynh_secure_remove --file="$install_dir/$app/bin"
ynh_safe_rm "$install_dir/$app/bin"

chmod 750 "$install_dir"
chmod -R o-rwx "$install_dir"
chown -R $app:$app "$install_dir"

#=================================================
# NGINX CONFIGURATION
#=================================================
ynh_script_progression --message="Configuring NGINX web server..."

# Create a dedicated NGINX config
ynh_add_nginx_config

#=================================================
# SPECIFIC SETUP
#=================================================
# CREATE LOG FOLDER
#=================================================

mkdir -p "/var/log/$app"
chown -R "$app":"$app" "/var/log/$app"

#=================================================
# ADD A CONFIGURATION
#=================================================
ynh_script_progression --message="Adding a config file..."
ynh_script_progression "Adding a config file..."

ynh_add_config --template="../conf/.env" --destination="$install_dir/$app/.env"

chmod 400 "$install_dir/$app/.env"
chown $app:$app "$install_dir/$app/.env"
ynh_config_add --template=".env" --destination="$install_dir/$app/.env"

#=================================================
# MAKE SETUP
#=================================================
ynh_script_progression --message="Making setup..."

# Set right permissions
chown -R "$app":"$app" $install_dir
ynh_script_progression "Making setup..."

export PATH="$PATH:$install_dir/.cargo/bin:$install_dir/.local/bin:/usr/local/sbin"
export PATH="$PATH:$install_dir/.cargo/bin:$install_dir/.local/bin:/usr/local/sbin"

pushd $install_dir/$app
sudo -u "$app" env PATH=$PATH plm migration run
ynh_exec_as_app PATH=$PATH plm migration run

# Add new instance
if [ $registration -eq 1 ]
then
sudo -u "$app" env PATH=$PATH plm instance new --domain "$domain" --name "$name" -l 'CC-BY'
ynh_exec_as_app PATH=$PATH plm instance new --domain "$domain" --name "$name" -l 'CC-BY'
else
sudo -u "$app" env PATH=$PATH plm instance new --private --domain "$domain" --name "$name" -l 'CC-BY'
ynh_exec_as_app PATH=$PATH plm instance new --private --domain "$domain" --name "$name" -l 'CC-BY'
fi

# Add admin user
sudo -u "$app" env PATH=$PATH plm users new --admin -n "$admin" -N "$admin" --email "$admin_email" --password "$password"
ynh_exec_as_app PATH=$PATH plm users new --admin -n "$admin" -N "$admin" --email "$admin_email" --password "$password"

# Initialise search index
sudo -u "$app" env PATH=$PATH plm search init -p $install_dir/$app
ynh_exec_as_app PATH=$PATH plm search init -p $install_dir/$app
popd

#=================================================
# SETUP SYSTEMD
#=================================================
ynh_script_progression --message="Configuring a systemd service..."
ynh_script_progression "Configuring $app's systemd service..."

ynh_config_add_nginx

# Create a dedicated systemd config
ynh_add_systemd_config
ynh_config_add_systemd

# Use logrotate to manage application logfile(s)
ynh_use_logrotate
ynh_config_add_logrotate

yunohost service add $app --description="$app daemon for Plume" --log="/var/log/$app/$app.log"

#=================================================
# START SYSTEMD SERVICE
#=================================================
ynh_script_progression --message="Starting a systemd service..."
ynh_script_progression "Starting $app's systemd service..."

ynh_systemd_action --service_name=$app --action="start" --log_path="systemd" --line_match="Started plume"
ynh_systemctl --service=$app --action="start" --log_path="systemd" --wait_until="Started plume"

#=================================================
# END OF SCRIPT
#=================================================

ynh_script_progression --message="Installation of $app completed"
ynh_script_progression "Installation of $app completed"
39 changes: 8 additions & 31 deletions scripts/remove
Original file line number Diff line number Diff line change
@@ -1,62 +1,39 @@
#!/bin/bash

#=================================================
# GENERIC START
#=================================================
# IMPORT GENERIC HELPERS
#=================================================

source _common.sh
source /usr/share/yunohost/helpers

#=================================================
# STANDARD REMOVE
#=================================================
# REMOVE SERVICE INTEGRATION IN YUNOHOST
#=================================================

# 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..."
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

#=================================================
# REMOVE DEPENDENCIES
#=================================================
ynh_script_progression --message="Removing dependencies..."
ynh_script_progression "Removing dependencies..."

export PATH="$PATH:$install_dir/.cargo/bin:$install_dir/.local/bin:/usr/local/sbin"
export PATH="$PATH:$install_dir/.cargo/bin:$install_dir/.local/bin:/usr/local/sbin"

pushd $install_dir/$app
sudo -u "$app" env PATH=$PATH cargo uninstall diesel_cli
ynh_exec_as_app PATH=$PATH cargo uninstall diesel_cli
popd

if [ -d "/usr/local/lib/rustlib" ]; then
sudo /usr/local/lib/rustlib/uninstall.sh
fi

#=================================================
# SPECIFIC REMOVE
#=================================================
# REMOVE VARIOUS FILES
#=================================================
ynh_script_progression --message="Removing various files..."

# Remove the log files

#=================================================
# END OF SCRIPT
#=================================================

ynh_script_progression --message="Removal of $app completed"
ynh_script_progression "Removal of $app completed"
Loading