diff --git a/debian/install b/debian/install index 5169d0b62..86636fa93 100644 --- a/debian/install +++ b/debian/install @@ -1,7 +1,7 @@ bin/* /usr/bin/ share/* /usr/share/yunohost/ hooks/* /usr/share/yunohost/hooks/ -helpers/* /usr/share/yunohost/helpers.d/ +helpers/* /usr/share/yunohost/ conf/* /usr/share/yunohost/conf/ locales/* /usr/share/yunohost/locales/ doc/yunohost.8.gz /usr/share/man/man8/ diff --git a/helpers/helpers b/helpers/helpers new file mode 100644 index 000000000..a0d0fb3a9 --- /dev/null +++ b/helpers/helpers @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +# Entrypoint for the helpers scripts +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) + +if [[ -n "${1:-}" ]]; then + # helpers version can be passed as first when sourcing. + YNH_HELPERS_VERSION="$1" +else + # ...or as environment variable set from manifest + # ...or default to 1 + YNH_HELPERS_VERSION=${YNH_HELPERS_VERSION:-1} +fi + +# This is a trick to later only restore set -x if it was set when calling this script +readonly XTRACE_ENABLE=$(set +o | grep xtrace) +set +x + +YNH_HELPERS_DIR="$SCRIPT_DIR/helpers.v${YNH_HELPERS_VERSION}.d" +case "$YNH_HELPERS_VERSION" in + 1) + readarray -t HELPERS < <(find "$YNH_HELPERS_DIR" -mindepth 1 -maxdepth 1 -type f) + for helper in "${HELPERS[@]}"; do + [ -r "$helper" ] && source "$helper" + done + ;; + *) + echo "Helpers are not available in version '$YNH_HELPERS_VERSION'." >&2 + exit 1 +esac + +eval "$XTRACE_ENABLE" diff --git a/helpers/apps b/helpers/helpers.v1.d/apps similarity index 100% rename from helpers/apps rename to helpers/helpers.v1.d/apps diff --git a/helpers/apt b/helpers/helpers.v1.d/apt similarity index 100% rename from helpers/apt rename to helpers/helpers.v1.d/apt diff --git a/helpers/backup b/helpers/helpers.v1.d/backup similarity index 100% rename from helpers/backup rename to helpers/helpers.v1.d/backup diff --git a/helpers/config b/helpers/helpers.v1.d/config similarity index 100% rename from helpers/config rename to helpers/helpers.v1.d/config diff --git a/helpers/fail2ban b/helpers/helpers.v1.d/fail2ban similarity index 100% rename from helpers/fail2ban rename to helpers/helpers.v1.d/fail2ban diff --git a/helpers/getopts b/helpers/helpers.v1.d/getopts similarity index 100% rename from helpers/getopts rename to helpers/helpers.v1.d/getopts diff --git a/helpers/go b/helpers/helpers.v1.d/go similarity index 100% rename from helpers/go rename to helpers/helpers.v1.d/go diff --git a/helpers/hardware b/helpers/helpers.v1.d/hardware similarity index 100% rename from helpers/hardware rename to helpers/helpers.v1.d/hardware diff --git a/helpers/logging b/helpers/helpers.v1.d/logging similarity index 100% rename from helpers/logging rename to helpers/helpers.v1.d/logging diff --git a/helpers/logrotate b/helpers/helpers.v1.d/logrotate similarity index 100% rename from helpers/logrotate rename to helpers/helpers.v1.d/logrotate diff --git a/helpers/mongodb b/helpers/helpers.v1.d/mongodb similarity index 100% rename from helpers/mongodb rename to helpers/helpers.v1.d/mongodb diff --git a/helpers/multimedia b/helpers/helpers.v1.d/multimedia similarity index 100% rename from helpers/multimedia rename to helpers/helpers.v1.d/multimedia diff --git a/helpers/mysql b/helpers/helpers.v1.d/mysql similarity index 100% rename from helpers/mysql rename to helpers/helpers.v1.d/mysql diff --git a/helpers/network b/helpers/helpers.v1.d/network similarity index 100% rename from helpers/network rename to helpers/helpers.v1.d/network diff --git a/helpers/nginx b/helpers/helpers.v1.d/nginx similarity index 100% rename from helpers/nginx rename to helpers/helpers.v1.d/nginx diff --git a/helpers/nodejs b/helpers/helpers.v1.d/nodejs similarity index 99% rename from helpers/nodejs rename to helpers/helpers.v1.d/nodejs index 9401fc875..779f077d0 100644 --- a/helpers/nodejs +++ b/helpers/helpers.v1.d/nodejs @@ -115,7 +115,7 @@ ynh_install_nodejs() { # Install (or update if YunoHost vendor/ folder updated since last install) n mkdir -p $n_install_dir/bin/ - cp /usr/share/yunohost/helpers.d/vendor/n/n $n_install_dir/bin/n + cp "$YNH_HELPERS_DIR/vendor/n/n" $n_install_dir/bin/n # Tweak for n to understand it's installed in $N_PREFIX ynh_replace_string --match_string="^N_PREFIX=\${N_PREFIX-.*}$" --replace_string="N_PREFIX=\${N_PREFIX-$N_PREFIX}" --target_file="$n_install_dir/bin/n" diff --git a/helpers/permission b/helpers/helpers.v1.d/permission similarity index 100% rename from helpers/permission rename to helpers/helpers.v1.d/permission diff --git a/helpers/php b/helpers/helpers.v1.d/php similarity index 100% rename from helpers/php rename to helpers/helpers.v1.d/php diff --git a/helpers/postgresql b/helpers/helpers.v1.d/postgresql similarity index 100% rename from helpers/postgresql rename to helpers/helpers.v1.d/postgresql diff --git a/helpers/redis b/helpers/helpers.v1.d/redis similarity index 100% rename from helpers/redis rename to helpers/helpers.v1.d/redis diff --git a/helpers/ruby b/helpers/helpers.v1.d/ruby similarity index 100% rename from helpers/ruby rename to helpers/helpers.v1.d/ruby diff --git a/helpers/setting b/helpers/helpers.v1.d/setting similarity index 100% rename from helpers/setting rename to helpers/helpers.v1.d/setting diff --git a/helpers/string b/helpers/helpers.v1.d/string similarity index 100% rename from helpers/string rename to helpers/helpers.v1.d/string diff --git a/helpers/systemd b/helpers/helpers.v1.d/systemd similarity index 100% rename from helpers/systemd rename to helpers/helpers.v1.d/systemd diff --git a/helpers/user b/helpers/helpers.v1.d/user similarity index 100% rename from helpers/user rename to helpers/helpers.v1.d/user diff --git a/helpers/utils b/helpers/helpers.v1.d/utils similarity index 99% rename from helpers/utils rename to helpers/helpers.v1.d/utils index f182fee38..631e154e2 100644 --- a/helpers/utils +++ b/helpers/helpers.v1.d/utils @@ -318,7 +318,7 @@ ynh_setup_source() { mv $src_filename $dest_dir/$src_rename fi elif [[ "$src_format" == "docker" ]]; then - /usr/share/yunohost/helpers.d/vendor/docker-image-extract/docker-image-extract -p $src_platform -o $dest_dir $src_url 2>&1 + "$YNH_HELPERS_DIR/vendor/docker-image-extract/docker-image-extract" -p $src_platform -o $dest_dir $src_url 2>&1 elif [[ "$src_format" == "zip" ]]; then # Zip format # Using of a temp directory, because unzip doesn't manage --strip-components diff --git a/helpers/vendor/docker-image-extract/LICENSE b/helpers/helpers.v1.d/vendor/docker-image-extract/LICENSE similarity index 100% rename from helpers/vendor/docker-image-extract/LICENSE rename to helpers/helpers.v1.d/vendor/docker-image-extract/LICENSE diff --git a/helpers/vendor/docker-image-extract/README.md b/helpers/helpers.v1.d/vendor/docker-image-extract/README.md similarity index 100% rename from helpers/vendor/docker-image-extract/README.md rename to helpers/helpers.v1.d/vendor/docker-image-extract/README.md diff --git a/helpers/vendor/docker-image-extract/docker-image-extract b/helpers/helpers.v1.d/vendor/docker-image-extract/docker-image-extract similarity index 100% rename from helpers/vendor/docker-image-extract/docker-image-extract rename to helpers/helpers.v1.d/vendor/docker-image-extract/docker-image-extract diff --git a/helpers/vendor/n/LICENSE b/helpers/helpers.v1.d/vendor/n/LICENSE similarity index 100% rename from helpers/vendor/n/LICENSE rename to helpers/helpers.v1.d/vendor/n/LICENSE diff --git a/helpers/vendor/n/README.md b/helpers/helpers.v1.d/vendor/n/README.md similarity index 100% rename from helpers/vendor/n/README.md rename to helpers/helpers.v1.d/vendor/n/README.md diff --git a/helpers/vendor/n/n b/helpers/helpers.v1.d/vendor/n/n similarity index 100% rename from helpers/vendor/n/n rename to helpers/helpers.v1.d/vendor/n/n diff --git a/share/helpers b/share/helpers deleted file mode 100644 index 04f7b538c..000000000 --- a/share/helpers +++ /dev/null @@ -1,8 +0,0 @@ -# -*- shell-script -*- - -readonly XTRACE_ENABLE=$(set +o | grep xtrace) # This is a trick to later only restore set -x if it was set when calling this script -set +x -for helper in $(run-parts --list /usr/share/yunohost/helpers.d 2>/dev/null) ; do - [ -r $helper ] && . $helper || true -done -eval "$XTRACE_ENABLE" diff --git a/src/app.py b/src/app.py index 018c339e7..4eab81a99 100644 --- a/src/app.py +++ b/src/app.py @@ -2968,6 +2968,7 @@ def _make_environment_for_app_script( "YNH_APP_INSTANCE_NUMBER": str(app_instance_nb), "YNH_APP_MANIFEST_VERSION": manifest.get("version", "?"), "YNH_APP_PACKAGING_FORMAT": str(manifest["packaging_format"]), + "YNH_HELPERS_VERSION": manifest.get("integration", {}).get("helpers_version") or manifest["packaging_format"], "YNH_ARCH": system_arch(), "YNH_DEBIAN_VERSION": debian_version(), }