diff --git a/.github/workflows/updater.sh b/.github/workflows/updater.sh new file mode 100644 index 0000000..d9edad7 --- /dev/null +++ b/.github/workflows/updater.sh @@ -0,0 +1,132 @@ +#!/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. + +# Remove this exit command when you are ready to run this Action +#exit 1 + +#================================================= +# 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=($(curl --silent "https://api.github.com/repos/$repo/releases" | jq -r '[ .[] | select(.tag_name=="'$version'").assets[].browser_download_url ] | join(" ") | @sh' | tr -d "'")) + +# 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 +# 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 + +# Each release can hold multiple assets (e.g. binaries for different architectures, source code, etc.) +echo "${#assets[@]} available asset(s)" + +#================================================= +# UPDATE SOURCE FILES +#================================================= + +# Here we use the $assets variable to get the resources published in the upstream release. +# Here is an example for Grav, it has to be adapted in accordance with how the upstream releases look like. + +# Let's loop over the array of assets URLs +for asset_url in ${assets[@]}; do + +echo "Handling asset at $asset_url" + +# Assign the asset to a source file in conf/ directory +# Here we base the source file name upon a unique keyword in the assets url (admin vs. update) +# Leave $src empty to ignore the asset +case $asset_url in + *"backdrop"*".zip"*) + src="app" + ;; + *) + src="" + ;; +esac + +# If $src is not empty, let's process the asset +if [ ! -z "$src" ]; then + +# 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 + +# Get extension +if [[ $filename == *.tar.gz ]]; then + extension=tar.gz +else + extension=${filename##*.} +fi + +# 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 +EOT +echo "... conf/$src.src updated" + +else +echo "... asset ignored" +fi + +done + +#================================================= +# 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 +#================================================= + +# Install moreutils, needed for sponge +sudo apt-get install moreutils + +# 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/README.md b/README.md index 5a22fe5..ea3755b 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,10 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in ## Overview -Easy-to-use CMS for building professional websites +Backdrop is a full-featured content management system that allows non-technical users to manage a wide variety of content. It can be used to create all kinds of websites including blogs, image galleries, social networks, intranets, and more. -**Shipped version:** 1.19.3~ynh1 + +**Shipped version:** 1.20.0~ynh1 **Demo:** https://backdropcms.org/demo @@ -29,7 +30,8 @@ Easy-to-use CMS for building professional websites #### upgrade -Backdrop CMS includes an update utility to handle any necessary changes to the database schema or configuration. [See instructions](https://backdropcms.org/upgrade) +Backdrop CMS includes an update utility to handle any necessary changes to the database schema or configuration. +Run `update.php` by navigating to `http://example.com/core/update.php` [See instructions](https://backdropcms.org/upgrade) ## Documentation and resources diff --git a/README_fr.md b/README_fr.md index 109e2bb..e228d91 100644 --- a/README_fr.md +++ b/README_fr.md @@ -11,9 +11,10 @@ Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour ## Vue d'ensemble -CMS facile à utiliser pour créer des sites Web professionnels +Backdrop est un système de gestion de contenu complet qui permet aux utilisateurs non techniques de gérer une grande variété de contenu. Il peut être utilisé pour créer toutes sortes de sites Web, notamment des blogs, des galeries d'image, des réseaux sociaux, des intranets et plus encore. -**Version incluse :** 1.19.3~ynh1 + +**Version incluse :** 1.20.0~ynh1 **Démo :** https://backdropcms.org/demo @@ -25,7 +26,7 @@ CMS facile à utiliser pour créer des sites Web professionnels ## Configuration -Backdrop CMS inclus un utilitaire de mise à jour pour gérer toutes les modifications nécessaires à configuration et base de données. [Voir les instructions](https://backdropcms.org/upgrade) +Backdrop CMS inclus un utilitaire de mise à jour pour gérer toutes les modifications nécessaires à configuration et base de données. Exécuter `update.php` en naviguant vers `https://example.com/core/update.php` [Voir les instructions](https://backdropcms.org/upgrade) ## Documentations et ressources diff --git a/conf/app.src b/conf/app.src index 23d2322..5621d89 100644 --- a/conf/app.src +++ b/conf/app.src @@ -1,6 +1,5 @@ -SOURCE_URL=https://github.com/backdrop/backdrop/releases/download/1.19.3/backdrop.zip -SOURCE_SUM=bc48494a699ba1a54018165ad46bdd48faa815e87df4ce052a43e8eb1ab23262 +SOURCE_URL=https://github.com/backdrop/backdrop/releases/download/1.20.0/backdrop.zip +SOURCE_SUM=bd4e65683fd0a0a2d82e7031e435a0e674fef297ed39829513126696443e21ce SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=zip SOURCE_IN_SUBDIR=true -SOURCE_FILENAME= diff --git a/doc/DESCRIPTION.md b/doc/DESCRIPTION.md new file mode 100644 index 0000000..20ee868 --- /dev/null +++ b/doc/DESCRIPTION.md @@ -0,0 +1 @@ +Backdrop is a full-featured content management system that allows non-technical users to manage a wide variety of content. It can be used to create all kinds of websites including blogs, image galleries, social networks, intranets, and more. diff --git a/doc/DESCRIPTION_fr.md b/doc/DESCRIPTION_fr.md new file mode 100644 index 0000000..d7932f7 --- /dev/null +++ b/doc/DESCRIPTION_fr.md @@ -0,0 +1 @@ +Backdrop est un système de gestion de contenu complet qui permet aux utilisateurs non techniques de gérer une grande variété de contenu. Il peut être utilisé pour créer toutes sortes de sites Web, notamment des blogs, des galeries d'image, des réseaux sociaux, des intranets et plus encore. diff --git a/doc/DISCLAIMER.md b/doc/DISCLAIMER.md index 90c6a2e..c78b834 100644 --- a/doc/DISCLAIMER.md +++ b/doc/DISCLAIMER.md @@ -1,3 +1,4 @@ #### upgrade -Backdrop CMS includes an update utility to handle any necessary changes to the database schema or configuration. [See instructions](https://backdropcms.org/upgrade) +Backdrop CMS includes an update utility to handle any necessary changes to the database schema or configuration. +Run `update.php` by navigating to `http://example.com/core/update.php` [See instructions](https://backdropcms.org/upgrade) diff --git a/doc/DISCLAIMER_fr.md b/doc/DISCLAIMER_fr.md index 38c7c3a..6fec59c 100644 --- a/doc/DISCLAIMER_fr.md +++ b/doc/DISCLAIMER_fr.md @@ -1,3 +1,3 @@ ## Configuration -Backdrop CMS inclus un utilitaire de mise à jour pour gérer toutes les modifications nécessaires à configuration et base de données. [Voir les instructions](https://backdropcms.org/upgrade) +Backdrop CMS inclus un utilitaire de mise à jour pour gérer toutes les modifications nécessaires à configuration et base de données. Exécuter `update.php` en naviguant vers `https://example.com/core/update.php` [Voir les instructions](https://backdropcms.org/upgrade) diff --git a/manifest.json b/manifest.json index a37a143..7c34e91 100644 --- a/manifest.json +++ b/manifest.json @@ -1,14 +1,14 @@ { - "name": "Backdrop", - "id": "backdrop", - "packaging_format": 1, - "description": { - "en": "Easy-to-use CMS for building professional websites", - "fr": "CMS facile à utiliser pour créer des sites Web professionnels" - }, - "version": "1.19.3~ynh1", - "url": "https://backdropcms.org/", - "upstream": { + "name": "Backdrop", + "id": "backdrop", + "packaging_format": 1, + "description": { + "en": "Easy-to-use CMS for building professional websites", + "fr": "CMS facile à utiliser pour créer des sites Web professionnels" + }, + "version": "1.20.0~ynh1", + "url": "https://backdropcms.org/", + "upstream": { "license": "GPL-2.0", "website": "https://backdropcms.org/", "demo": "https://backdropcms.org/demo", @@ -16,42 +16,42 @@ "userdoc": "https://backdropcms.org/user-guide", "code": "https://github.com/backdrop/backdrop" }, - "license": "GPL-2.0", - "maintainer": { - "name": "eric_G", - "email": "" - }, - "requirements": { - "yunohost": ">= 4.2.4" - }, - "multi_instance": true, - "services": [ - "nginx", - "php7.3-fpm", - "mysql" - ], - "arguments": { - "install" : [ - { - "name": "domain", - "type": "domain", - "example": "domain.org" + "license": "GPL-2.0", + "maintainer": { + "name": "eric_G", + "email": "" }, - { - "name": "path", - "type": "path", - "example": "/backdrop", - "default": "/backdrop" - }, - { - "name": "is_public", - "type": "boolean", - "help": { - "en": "If enabled, Backdrop will be accessible by people who do not have an account. This can be changed later via the webadmin.", - "fr": "Si cette case est cochée, Backdrop sera accessible aux personnes n’ayant pas de compte. Vous pourrez changer ceci plus tard via la webadmin." - }, - "default": true - } - ] - } + "requirements": { + "yunohost": ">= 4.2.4" + }, + "multi_instance": true, + "services": [ + "nginx", + "php7.3-fpm", + "mysql" + ], + "arguments": { + "install": [ + { + "name": "domain", + "type": "domain", + "example": "domain.org" + }, + { + "name": "path", + "type": "path", + "example": "/backdrop", + "default": "/backdrop" + }, + { + "name": "is_public", + "type": "boolean", + "help": { + "en": "If enabled, Backdrop will be accessible by people who do not have an account. This can be changed later via the webadmin.", + "fr": "Si cette case est cochée, Backdrop sera accessible aux personnes n’ayant pas de compte. Vous pourrez changer ceci plus tard via la webadmin." + }, + "default": true + } + ] + } } diff --git a/scripts/restore b/scripts/restore index 57f60f1..aa11eb0 100644 --- a/scripts/restore +++ b/scripts/restore @@ -33,8 +33,6 @@ phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= ynh_script_progression --message="Validating restoration parameters..." --weight=2 -ynh_webpath_available --domain=$domain --path_url=$path_url \ - || ynh_die --message="Path not available: ${domain}${path_url}" test ! -d $final_path \ || ynh_die --message="There is already a directory: $final_path "