#!/bin/bash #================================================= # IMPORT GENERIC HELPERS #================================================= source _common.sh source ynh_redis source ynh_uwsgi_service__2 source /usr/share/yunohost/helpers #================================================= # STOP SYSTEMD SERVICE #================================================= ynh_script_progression --message="Stopping a systemd service..." for service in "${services[@]}"; do ynh_systemd_action --service_name="${app}_${service}" --action="stop" --log_path="systemd" done ynh_systemd_action --service_name="uwsgi-app@$app.service" --action="stop" --log_path="systemd" #================================================= # ENSURE DOWNWARD COMPATIBILITY #================================================= # ynh_script_progression --message="Ensuring downward compatibility..." #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= ynh_script_progression --message="Upgrading source files..." # Download, check integrity, uncompress and patch the source from app.src ynh_setup_source --dest_dir="$install_dir" chmod -R o-rwx "$install_dir" chown -R "$app:www-data" "$install_dir" #================================================= # UPDATE A CONFIG FILE #================================================= ynh_script_progression --message="Updating a configuration file..." ynh_add_config --template="pagure.cfg.sample" --destination="$install_dir/pagure.cfg" chmod 400 "$install_dir/pagure.cfg" chown "$app:$app" "$install_dir/pagure.cfg" #================================================= # BUILD APP #================================================= ynh_script_progression --message="Building app..." pushd "$install_dir" ynh_secure_remove --file="${install_dir}/venv" ynh_exec_as "$app" python3 -m venv venv ynh_exec_as "$app" "$install_dir/venv/bin/python3" -m pip install --upgrade pip ynh_exec_as "$app" "$install_dir/venv/bin/python3" -m pip install wheel ynh_exec_as "$app" "$install_dir/venv/bin/python3" -m pip install cffi ynh_exec_as "$app" "$install_dir/venv/bin/python3" -m pip install psycopg2 ynh_exec_as "$app" "$install_dir/venv/bin/python3" -m pip install pyyaml ynh_exec_as "$app" "$install_dir/venv/bin/python3" -m pip install pygit2 ynh_exec_as "$app" "$install_dir/venv/bin/python3" -m pip install "jinja2<3.1.0" ynh_exec_as "$app" "$install_dir/venv/bin/python3" -m pip install -r requirements.txt ynh_add_config --template="alembic.ini" --destination="$install_dir/alembic.ini" ynh_exec_as "$app" PAGURE_CONFIG="${install_dir}/pagure.cfg" "$install_dir/venv/bin/python3" alembic upgrade head 2>&1 popd ynh_replace_string --match_string="validators.Required" --replace_string="validators.DataRequired" --target_file="$install_dir/pagure/forms.py" chmod -R o-rwx "$install_dir" chown -R "$app:www-data" "$install_dir" #================================================= # REAPPLY SYSTEM CONFIGURATIONS #================================================= 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 for service in "${services[@]}"; do ynh_add_systemd_config --service="${app}_${service}" --template="pagure_${service}.service" yunohost service add "${app}_${service}" done ynh_add_config --template="pagure.wsgi" --destination="$install_dir/pagure.wsgi" ynh_add_uwsgi_service --service="$app" --template="uwsgi.ini" #================================================= # START SYSTEMD SERVICE #================================================= ynh_script_progression --message="Starting $app's systemd services..." # Start a systemd service for service in "${services[@]}"; do ynh_systemd_action --service_name="${app}_${service}" --action="start" --log_path="systemd" --line_match="ready" done ynh_systemd_action --service_name="uwsgi-app@$app.service" --action="start" --log_path="systemd" --line_match="Started" #================================================= # END OF SCRIPT #================================================= ynh_script_progression --message="Upgrade of $app completed"