#!/bin/bash #================================================= # IMPORT GENERIC HELPERS #================================================= source _common.sh source ynh_redis source ynh_uwsgi_service__2 source /usr/share/yunohost/helpers #================================================= # INITIALIZE AND STORE SETTINGS #================================================= secret_key=$(ynh_string_random) ynh_app_setting_set --app="$app" --key="secret_key" --value="$secret_key" salt_email=$(ynh_string_random) ynh_app_setting_set --app="$app" --key="salt_email" --value="$salt_email" #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= ynh_script_progression --message="Setting up 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" chmod -R o-rwx "$data_dir" chown -R "$app:www-data" "$data_dir" #================================================= # APP INITIAL CONFIGURATION #================================================= ynh_script_progression --message="Adding $app's configuration files..." --weight=1 redis_db=$(ynh_redis_get_free_db) ynh_app_setting_set --app="$app" --key=redis_db --value="$redis_db" 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_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" createdb.py --initial alembic.ini 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" #================================================= # SYSTEM CONFIGURATION #================================================= 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 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" yunohost service add "uwsgi-app@$app" #================================================= # START SYSTEMD SERVICE #================================================= ynh_script_progression --message="Starting a systemd service..." # 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="Installation of $app completed"