From 590c0dc94cee758f60500930447abb1253dafad2 Mon Sep 17 00:00:00 2001 From: yalh76 Date: Fri, 29 Jul 2022 23:56:30 +0200 Subject: [PATCH 1/4] apply example_ynh --- .github/workflows/updater.sh | 102 ++++++++++++++++++++++++++++++++++ .github/workflows/updater.yml | 49 ++++++++++++++++ doc/DESCRIPTION _fr.md | 1 + doc/DISCLAIMER_fr.md | 9 +++ manifest.json | 11 +++- scripts/backup | 4 +- scripts/install | 44 ++++++++------- scripts/remove | 4 +- scripts/restore | 18 +++--- scripts/upgrade | 32 +++++------ 10 files changed, 219 insertions(+), 55 deletions(-) create mode 100644 .github/workflows/updater.sh create mode 100644 .github/workflows/updater.yml create mode 100644 doc/DESCRIPTION _fr.md create mode 100644 doc/DISCLAIMER_fr.md diff --git a/.github/workflows/updater.sh b/.github/workflows/updater.sh new file mode 100644 index 0000000..aad046b --- /dev/null +++ b/.github/workflows/updater.sh @@ -0,0 +1,102 @@ +#!/bin/bash + +#================================================= +# PACKAGE UPDATING HELPER +#================================================= + +# This script is meant to be run by GitHub Actions +# The YunoHost-Apps organisation offers a template Action to run this script periodically +# Since each app is different, maintainers can adapt its contents so as to perform +# automatic actions when a new upstream release is detected. + +#================================================= +# FETCHING LATEST RELEASE AND ITS ASSETS +#================================================= + +# Fetching information +current_version=$(cat manifest.json | jq -j '.version|split("~")[0]') +repo=$(cat manifest.json | jq -j '.upstream.code|split("https://github.com/")[1]') +# Some jq magic is needed, because the latest upstream release is not always the latest version (e.g. security patches for older versions) +version=$(curl --silent "https://api.github.com/repos/$repo/releases" | jq -r '.[] | select( .prerelease != true ) | .tag_name' | sort -V | tail -1) +assets="https://piwigo.org/download/dlcounter.php?code=$version" + +# Later down the script, we assume the version has only digits and dots +# Sometimes the release name starts with a "v", so let's filter it out. +# You may need more tweaks here if the upstream repository has different naming conventions. +if [[ ${version:0:1} == "v" || ${version:0:1} == "V" ]]; then + version=${version:1} +fi + +# Setting up the environment variables +echo "Current version: $current_version" +echo "Latest release from upstream: $version" +echo "VERSION=$version" >> $GITHUB_ENV +echo "REPO=$repo" >> $GITHUB_ENV +# For the time being, let's assume the script will fail +echo "PROCEED=false" >> $GITHUB_ENV + +# Proceed only if the retrieved version is greater than the current one +if ! dpkg --compare-versions "$current_version" "lt" "$version" ; then + echo "::warning ::No new version available" + exit 0 +# Proceed only if a PR for this new version does not already exist +elif git ls-remote -q --exit-code --heads https://github.com/$GITHUB_REPOSITORY.git ci-auto-update-v$version ; then + echo "::warning ::A branch already exists for this update" + exit 0 +fi + +#================================================= +# UPDATE SOURCE FILES +#================================================= + +# Let's download source tarball +asset_url=$assets + +echo "Handling asset at $asset_url" + +src="app" + +# Create the temporary directory +tempdir="$(mktemp -d)" + +# Download sources and calculate checksum +filename=${asset_url##*/} +curl --silent -4 -L $asset_url -o "$tempdir/$filename" +checksum=$(sha256sum "$tempdir/$filename" | head -c 64) + +# Delete temporary directory +rm -rf $tempdir + +extension=zip + +# Rewrite source file +cat < conf/$src.src +SOURCE_URL=$asset_url +SOURCE_SUM=$checksum +SOURCE_SUM_PRG=sha256sum +SOURCE_FORMAT=$extension +SOURCE_IN_SUBDIR=true +SOURCE_FILENAME= +SOURCE_EXTRACT=true +EOT +echo "... conf/$src.src updated" + +#================================================= +# SPECIFIC UPDATE STEPS +#================================================= + +# Any action on the app's source code can be done. +# The GitHub Action workflow takes care of committing all changes after this script ends. + +#================================================= +# GENERIC FINALIZATION +#================================================= + +# Replace new version in manifest +echo "$(jq -s --indent 4 ".[] | .version = \"$version~ynh1\"" manifest.json)" > manifest.json + +# No need to update the README, yunohost-bot takes care of it + +# The Action will proceed only if the PROCEED environment variable is set to true +echo "PROCEED=true" >> $GITHUB_ENV +exit 0 diff --git a/.github/workflows/updater.yml b/.github/workflows/updater.yml new file mode 100644 index 0000000..fb72ba0 --- /dev/null +++ b/.github/workflows/updater.yml @@ -0,0 +1,49 @@ +# This workflow allows GitHub Actions to automagically update your app whenever a new upstream release is detected. +# You need to enable Actions in your repository settings, and fetch this Action from the YunoHost-Apps organization. +# This file should be enough by itself, but feel free to tune it to your needs. +# It calls updater.sh, which is where you should put the app-specific update steps. +name: Check for new upstream releases +on: + # Allow to manually trigger the workflow + workflow_dispatch: + # Run it every day at 6:00 UTC + schedule: + - cron: '0 6 * * *' +jobs: + updater: + runs-on: ubuntu-latest + steps: + - name: Fetch the source code + uses: actions/checkout@v2 + with: + token: ${{ secrets.GITHUB_TOKEN }} + - name: Run the updater script + id: run_updater + run: | + # Setting up Git user + git config --global user.name 'yunohost-bot' + git config --global user.email 'yunohost-bot@users.noreply.github.com' + # Run the updater script + /bin/bash .github/workflows/updater.sh + - name: Commit changes + id: commit + if: ${{ env.PROCEED == 'true' }} + run: | + git commit -am "Upgrade to v$VERSION" + - name: Create Pull Request + id: cpr + if: ${{ env.PROCEED == 'true' }} + uses: peter-evans/create-pull-request@v3 + with: + token: ${{ secrets.GITHUB_TOKEN }} + commit-message: Update to version ${{ env.VERSION }} + committer: 'yunohost-bot ' + author: 'yunohost-bot ' + signoff: false + base: testing + branch: ci-auto-update-v${{ env.VERSION }} + delete-branch: true + title: 'Upgrade to version ${{ env.VERSION }}' + body: | + Upgrade to v${{ env.VERSION }} + draft: false diff --git a/doc/DESCRIPTION _fr.md b/doc/DESCRIPTION _fr.md new file mode 100644 index 0000000..b315c8e --- /dev/null +++ b/doc/DESCRIPTION _fr.md @@ -0,0 +1 @@ +[Piwigo](http://piwigo.org) est un logiciel de galerie photo pour le web, construit par une communauté active d'utilisateurs et de développeurs. Des extensions rendent Piwigo facilement personnalisable. diff --git a/doc/DISCLAIMER_fr.md b/doc/DISCLAIMER_fr.md new file mode 100644 index 0000000..3d44fa1 --- /dev/null +++ b/doc/DISCLAIMER_fr.md @@ -0,0 +1,9 @@ +## Caractéristiques spécifiques de YunoHost + +En plus des fonctionnalités de base de Piwigo, les éléments suivants sont mis à disposition avec ce paquet : + * Intégration avec les utilisateurs de YunoHost et le SSO : + * mode privé : limiter l'accès aux utilisateurs de YunoHost. + * mode public : + * SSO pour les utilisateurs de YunoHost + * autoriser la gestion d'autres utilisateurs, et mode invité + * Permet à un utilisateur de YunoHost d'être l'administrateur (défini à l'installation). diff --git a/manifest.json b/manifest.json index d93ad5d..21b5361 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,7 @@ "en": "Open source photo gallery for the web", "fr": "Galerie de photos open source pour le web" }, - "version": "12.2.0~ynh1", + "version": "12.2.0~ynh2", "url": "http://piwigo.org", "upstream": { "license": "GPL-2.0", @@ -54,7 +54,14 @@ "en": "Choose the application language", "fr": "Choisissez la langue de l'application" }, - "choices": ["de", "en", "es", "fr", "it", "pt"], + "choices": [ + "de", + "en", + "es", + "fr", + "it", + "pt" + ], "default": "en" }, { diff --git a/scripts/backup b/scripts/backup index 3ab9f0b..95422cc 100644 --- a/scripts/backup +++ b/scripts/backup @@ -28,7 +28,7 @@ final_path=$(ynh_app_setting_get --app=$app --key=final_path) domain=$(ynh_app_setting_get --app=$app --key=domain) db_name=$(ynh_app_setting_get --app=$app --key=db_name) phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) -datapath=$(ynh_app_setting_get --app=$app --key=datapath) +datadir=$(ynh_app_setting_get --app=$app --key=datadir) #================================================= # DECLARE DATA AND CONF FILES TO BACKUP @@ -45,7 +45,7 @@ ynh_backup --src_path="$final_path" # BACKUP THE DATA DIR #================================================= -ynh_backup --src_path="$datapath" --is_big +ynh_backup --src_path="$datadir" --is_big #================================================= # BACKUP THE NGINX CONFIGURATION diff --git a/scripts/install b/scripts/install index 7a7797e..7116498 100644 --- a/scripts/install +++ b/scripts/install @@ -100,30 +100,10 @@ shopt -s extglob mkdir $final_path cp -a $tmpdir/!(upload|_data|galleries) $final_path -datapath=/home/yunohost.app/$app - -mkdir -p $datapath/_data -mkdir -p $datapath/upload -mkdir -p $datapath/galleries - -ln -sd $datapath/_data $final_path/_data -ln -sd $datapath/upload $final_path/upload -ln -sd $datapath/galleries $final_path/galleries - -cp -Rp $tmpdir/_data/. $final_path/_data -cp -Rp $tmpdir/upload/. $final_path/upload -cp -Rp $tmpdir/galleries/. $final_path/galleries - -chmod 750 "$datapath" -chmod -R o-rwx "$datapath" -chown -R $app:www-data "$datapath" - chmod 750 "$final_path" chmod -R o-rwx "$final_path" chown -R $app:www-data "$final_path" -ynh_app_setting_set --app=$app --key=datapath --value=$datapath - ynh_secure_remove --file="$tmpdir" #================================================= @@ -145,6 +125,30 @@ ynh_add_nginx_config #================================================= # SPECIFIC SETUP +#================================================= +# CREATE DATA DIRECTORY +#================================================= +ynh_script_progression --message="Creating a data directory..." + +datadir=/home/yunohost.app/$app +ynh_app_setting_set --app=$app --key=datadir --value=$datadir + +mkdir -p $datadir/_data +mkdir -p $datadir/upload +mkdir -p $datadir/galleries + +ln -sd $datadir/_data $final_path/_data +ln -sd $datadir/upload $final_path/upload +ln -sd $datadir/galleries $final_path/galleries + +cp -Rp $tmpdir/_data/. $final_path/_data +cp -Rp $tmpdir/upload/. $final_path/upload +cp -Rp $tmpdir/galleries/. $final_path/galleries + +chmod 750 "$datadir" +chmod -R o-rwx "$datadir" +chown -R $app:www-data "$datadir" + #================================================= # SETUP APPLICATION WITH CURL #================================================= diff --git a/scripts/remove b/scripts/remove index b7608a5..75ef24b 100644 --- a/scripts/remove +++ b/scripts/remove @@ -20,7 +20,7 @@ domain=$(ynh_app_setting_get --app=$app --key=domain) db_name=$(ynh_app_setting_get --app=$app --key=db_name) db_user=$db_name final_path=$(ynh_app_setting_get --app=$app --key=final_path) -datapath=$(ynh_app_setting_get --app=$app --key=datapath) +datadir=$(ynh_app_setting_get --app=$app --key=datadir) #================================================= # STANDARD REMOVE @@ -48,7 +48,7 @@ ynh_secure_remove --file="$final_path" if [ "${YNH_APP_PURGE:-0}" -eq 1 ] then ynh_script_progression --message="Removing app data directory..." --weight=1 - ynh_secure_remove --file="$datapath" + ynh_secure_remove --file="$datadir" fi #================================================= diff --git a/scripts/restore b/scripts/restore index 4612197..2a21445 100644 --- a/scripts/restore +++ b/scripts/restore @@ -30,7 +30,7 @@ final_path=$(ynh_app_setting_get --app=$app --key=final_path) db_name=$(ynh_app_setting_get --app=$app --key=db_name) db_user=$db_name phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) -datapath=$(ynh_app_setting_get --app=$app --key=datapath) +datadir=$(ynh_app_setting_get --app=$app --key=datadir) #================================================= # CHECK IF THE APP CAN BE RESTORED @@ -64,17 +64,15 @@ chown -R $app:www-data "$final_path" #================================================= # RESTORE THE DATA DIRECTORY #================================================= -ynh_script_progression --message="Restoring data directory..." +ynh_script_progression --message="Restoring the data directory..." -# Use --not_mandatory for the data directory, because if the backup has been made with BACKUP_CORE_ONLY, there's no data into the backup. -ynh_restore_file --origin_path="$datapath" --not_mandatory +ynh_restore_file --origin_path="$datadir" --not_mandatory -# Create app folders -mkdir -p /home/yunohost.app/$app/upload +mkdir -p $datadir -chmod 750 "$datapath" -chmod -R o-rwx "$datapath" -chown -R $app:www-data "$datapath" +chmod 750 "$datadir" +chmod -R o-rwx "$datadir" +chown -R $app:www-data "$datadir" #================================================= # RESTORE FAIL2BAN CONFIGURATION @@ -109,7 +107,7 @@ phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # RESTORE THE NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Restoring the NGINX configuration..." +ynh_script_progression --message="Restoring the NGINX web server configuration..." ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" diff --git a/scripts/upgrade b/scripts/upgrade index 73110b7..d658333 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -34,16 +34,6 @@ ynh_script_progression --message="Checking version..." upgrade_type=$(ynh_check_app_version_changed) -#================================================= -# FIX MISSING APP SETTING THAT BREAKS BACKUP -#================================================= - -# If datapath doesn't exist, create it -if [ -z "$datapath" ]; then - datapath=/home/yunohost.app/$app - ynh_app_setting_set --app=$app --key=datapath --value=$datapath -fi - #================================================= # BACKUP BEFORE UPGRADE THEN ACTIVE TRAP #================================================= @@ -70,6 +60,12 @@ if ynh_legacy_permissions_exists; then ynh_legacy_permissions_delete_all fi +# If datadir doesn't exist, create it +if [ -z "$datadir" ]; then + datadir=/home/yunohost.app/$app + ynh_app_setting_set --app=$app --key=datadir --value=$datadir +fi + # If db_name doesn't exist, create it if [ -z "$db_name" ]; then db_name=$(ynh_sanitize_dbid --db_name=$app) @@ -123,8 +119,6 @@ ynh_system_user_create --username=$app --home_dir="$final_path" # sets extended pattern matching options in the bash shell shopt -s extglob -datapath=/home/yunohost.app/$app - if [ "$upgrade_type" == "UPGRADE_APP" ] then ynh_script_progression --message="Upgrading source files..." --weight=3 @@ -145,24 +139,24 @@ then # If the _data subdirectory wasn't already moved to /home/yunohost.app/$app, # then move it there if [ ! -h $final_path/_data ] ; then - mv $final_path/_data $datapath - ln -sd $datapath/_data $final_path/_data + mv $final_path/_data $datadir + ln -sd $datadir/_data $final_path/_data fi # Backward compatibility: # If the galleries subdirectory wasn't already moved to /home/yunohost.app/$app, # then move it there if [ ! -h $final_path/galleries ] ; then - mv $final_path/galleries $datapath - ln -sd $datapath/galleries $final_path/galleries + mv $final_path/galleries $datadir + ln -sd $datadir/galleries $final_path/galleries fi ynh_secure_remove --file="$tmpdir" fi -chmod 750 "$datapath" -chmod -R o-rwx "$datapath" -chown -R $app:www-data "$datapath" +chmod 750 "$datadir" +chmod -R o-rwx "$datadir" +chown -R $app:www-data "$datadir" chmod 750 "$final_path" chmod -R o-rwx "$final_path" From 73a6023d6b7b277a2dc1089d4eccb42807f5d911 Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Fri, 29 Jul 2022 21:56:40 +0000 Subject: [PATCH 2/4] Auto-update README --- README.md | 2 +- README_fr.md | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 98e4134..856bea0 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in [Piwigo](http://piwigo.org) is a photo gallery software for the web, built by an active community of users and developers. Extensions make Piwigo easily customizable. -**Shipped version:** 12.2.0~ynh1 +**Shipped version:** 12.2.0~ynh2 **Demo:** https://piwigo.org/demo diff --git a/README_fr.md b/README_fr.md index 362bc02..ee51102 100644 --- a/README_fr.md +++ b/README_fr.md @@ -18,7 +18,7 @@ Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour [Piwigo](http://piwigo.org) is a photo gallery software for the web, built by an active community of users and developers. Extensions make Piwigo easily customizable. -**Version incluse :** 12.2.0~ynh1 +**Version incluse :** 12.2.0~ynh2 **Démo :** https://piwigo.org/demo @@ -28,15 +28,15 @@ Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour ## Avertissements / informations importantes -## YunoHost specific features +## Caractéristiques spécifiques de YunoHost -In addition to Piwigo core features, the following are made available with this package: - * Integrate with YunoHost users and SSO: - * private mode: limit access to YunoHost users - * public mode: - * SSO for YunoHost users - * allow other users management, and guest mode - * Allow one YunoHost user to be the administrator (set at the installation) +En plus des fonctionnalités de base de Piwigo, les éléments suivants sont mis à disposition avec ce paquet : + * Intégration avec les utilisateurs de YunoHost et le SSO : + * mode privé : limiter l'accès aux utilisateurs de YunoHost. + * mode public : + * SSO pour les utilisateurs de YunoHost + * autoriser la gestion d'autres utilisateurs, et mode invité + * Permet à un utilisateur de YunoHost d'être l'administrateur (défini à l'installation). ## Documentations et ressources From 2f94e895846a7660035cccb2321b6aa4192b4566 Mon Sep 17 00:00:00 2001 From: yalh76 Date: Sat, 30 Jul 2022 07:35:38 +0200 Subject: [PATCH 3/4] Fix install --- scripts/install | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/install b/scripts/install index 7116498..b03f18c 100644 --- a/scripts/install +++ b/scripts/install @@ -104,8 +104,6 @@ chmod 750 "$final_path" chmod -R o-rwx "$final_path" chown -R $app:www-data "$final_path" -ynh_secure_remove --file="$tmpdir" - #================================================= # PHP-FPM CONFIGURATION #================================================= @@ -145,6 +143,8 @@ cp -Rp $tmpdir/_data/. $final_path/_data cp -Rp $tmpdir/upload/. $final_path/upload cp -Rp $tmpdir/galleries/. $final_path/galleries +ynh_secure_remove --file="$tmpdir" + chmod 750 "$datadir" chmod -R o-rwx "$datadir" chown -R $app:www-data "$datadir" From a6ee34cf385cf2d91f1945282aa61188283b0203 Mon Sep 17 00:00:00 2001 From: yalh76 Date: Sat, 30 Jul 2022 14:04:46 +0200 Subject: [PATCH 4/4] Missing datadir --- scripts/upgrade | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/upgrade b/scripts/upgrade index d658333..e4caa79 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -24,8 +24,9 @@ is_public=$(ynh_app_setting_get --app=$app --key=is_public) final_path=$(ynh_app_setting_get --app=$app --key=final_path) db_name=$(ynh_app_setting_get --app=$app --key=db_name) db_user=$db_name -admin_pwd=$(ynh_app_setting_get --app=$app --key=admin_pwd) db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd) +admin_pwd=$(ynh_app_setting_get --app=$app --key=admin_pwd) +datadir=$(ynh_app_setting_get --app=$app --key=datadir) #================================================= # CHECK VERSION