diff --git a/ALL_README.md b/ALL_README.md
index 77b7509..8938aae 100644
--- a/ALL_README.md
+++ b/ALL_README.md
@@ -1,6 +1,8 @@
# All available README files by language
- [Read the README in English](README.md)
+- [Lee el README en español](README_es.md)
- [Irakurri README euskaraz](README_eu.md)
- [Lire le README en français](README_fr.md)
- [Le o README en galego](README_gl.md)
+- [阅读中文(简体)的 README](README_zh_Hans.md)
diff --git a/README_es.md b/README_es.md
new file mode 100644
index 0000000..8b8fe2e
--- /dev/null
+++ b/README_es.md
@@ -0,0 +1,53 @@
+
+
+# Dendrite para Yunohost
+
+[](https://dash.yunohost.org/appci/app/dendrite)  
+
+[](https://install-app.yunohost.org/?app=dendrite)
+
+*[Leer este README en otros idiomas.](./ALL_README.md)*
+
+> *Este paquete le permite instalarDendrite rapidamente y simplement en un servidor YunoHost.*
+> *Si no tiene YunoHost, visita [the guide](https://yunohost.org/install) para aprender como instalarla.*
+
+## Descripción general
+
+Dendrite is a second-generation Matrix homeserver written in Go. It intends to provide an efficient, reliable and scalable alternative to Synapse:
+
+### Features
+
+- Efficient: A small memory footprint with better baseline performance than an out-of-the-box Synapse.
+- Reliable: Implements the Matrix specification as written, using the same test suite as Synapse as well as a brand new Go test suite.
+- Scalable: can run on multiple machines and eventually scale to massive homeserver deployments.
+
+
+**Versión actual:** 0.13.7~ynh1
+## :red_circle: funcionalidades no deseadas
+
+- **Alpha software**: Early development stage. May contain changing or unstable features, bugs, and security vulnerability.
+
+## Documentaciones y recursos
+
+- Sitio web oficial:
+- Documentación administrador oficial:
+- Repositorio del código fuente oficial de la aplicación :
+- Catálogo YunoHost:
+- Reportar un error:
+
+## Información para desarrolladores
+
+Por favor enviar sus correcciones a la [`branch testing`](https://github.com/YunoHost-Apps/dendrite_ynh/tree/testing
+
+Para probar la rama `testing`, sigue asÍ:
+
+```bash
+sudo yunohost app install https://github.com/YunoHost-Apps/dendrite_ynh/tree/testing --debug
+o
+sudo yunohost app upgrade dendrite -u https://github.com/YunoHost-Apps/dendrite_ynh/tree/testing --debug
+```
+
+**Mas informaciones sobre el empaquetado de aplicaciones:**
diff --git a/README_gl.md b/README_gl.md
index d1945a6..368f495 100644
--- a/README_gl.md
+++ b/README_gl.md
@@ -26,7 +26,7 @@ Dendrite is a second-generation Matrix homeserver written in Go. It intends to p
**Versión proporcionada:** 0.13.7~ynh1
-## :red_circle: Caraterísticas cuestionables
+## :red_circle: Debes considerar
- **Alpha software**: Early development stage. May contain changing or unstable features, bugs, and security vulnerability.
diff --git a/README_zh_Hans.md b/README_zh_Hans.md
new file mode 100644
index 0000000..8af4201
--- /dev/null
+++ b/README_zh_Hans.md
@@ -0,0 +1,53 @@
+
+
+# YunoHost 上的 Dendrite
+
+[](https://dash.yunohost.org/appci/app/dendrite)  
+
+[](https://install-app.yunohost.org/?app=dendrite)
+
+*[阅读此 README 的其它语言版本。](./ALL_README.md)*
+
+> *通过此软件包,您可以在 YunoHost 服务器上快速、简单地安装 Dendrite。*
+> *如果您还没有 YunoHost,请参阅[指南](https://yunohost.org/install)了解如何安装它。*
+
+## 概况
+
+Dendrite is a second-generation Matrix homeserver written in Go. It intends to provide an efficient, reliable and scalable alternative to Synapse:
+
+### Features
+
+- Efficient: A small memory footprint with better baseline performance than an out-of-the-box Synapse.
+- Reliable: Implements the Matrix specification as written, using the same test suite as Synapse as well as a brand new Go test suite.
+- Scalable: can run on multiple machines and eventually scale to massive homeserver deployments.
+
+
+**分发版本:** 0.13.7~ynh1
+## :red_circle: 负面特征
+
+- **Alpha software**: Early development stage. May contain changing or unstable features, bugs, and security vulnerability.
+
+## 文档与资源
+
+- 官方应用网站:
+- 官方管理文档:
+- 上游应用代码库:
+- YunoHost 商店:
+- 报告 bug:
+
+## 开发者信息
+
+请向 [`testing` 分支](https://github.com/YunoHost-Apps/dendrite_ynh/tree/testing) 发送拉取请求。
+
+如要尝试 `testing` 分支,请这样操作:
+
+```bash
+sudo yunohost app install https://github.com/YunoHost-Apps/dendrite_ynh/tree/testing --debug
+或
+sudo yunohost app upgrade dendrite -u https://github.com/YunoHost-Apps/dendrite_ynh/tree/testing --debug
+```
+
+**有关应用打包的更多信息:**
diff --git a/conf/systemd.service b/conf/systemd.service
index 01d3301..1ed73ad 100644
--- a/conf/systemd.service
+++ b/conf/systemd.service
@@ -1,5 +1,5 @@
[Unit]
-Description=Dentrite Matrix homeserver
+Description=Dentrite: Matrix homeserver
After=network.target postgresql@__PSQL_VERSION__-main.service
[Service]
diff --git a/manifest.toml b/manifest.toml
index f865e15..5295780 100644
--- a/manifest.toml
+++ b/manifest.toml
@@ -16,7 +16,7 @@ admindoc = "https://github.com/matrix-org/dendrite/tree/master/docs"
code = "https://github.com/matrix-org/dendrite"
[integration]
-yunohost = ">= 11.2"
+yunohost = ">= 11.2.12"
architectures = "all"
multi_instance = false
diff --git a/scripts/backup b/scripts/backup
index 4cd0f6d..2f4ae95 100644
--- a/scripts/backup
+++ b/scripts/backup
@@ -22,29 +22,15 @@ ynh_print_info --message="Declaring files to be backed up..."
ynh_backup --src_path="$install_dir"
#=================================================
-# BACKUP THE NGINX CONFIGURATION
+# SYSTEM CONFIGURATION
#=================================================
ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf"
-#=================================================
-# SPECIFIC BACKUP
-#=================================================
-# BACKUP LOGROTATE
-#=================================================
-
ynh_backup --src_path="/etc/logrotate.d/$app"
-#=================================================
-# BACKUP SYSTEMD
-#=================================================
-
ynh_backup --src_path="/etc/systemd/system/$app.service"
-#=================================================
-# BACKUP VARIOUS FILES
-#=================================================
-
if yunohost --output-as plain domain list | grep -q "^$server_name$"
then
ynh_backup --src_path="/etc/nginx/conf.d/${server_name}.d/${app}_server_name.conf"
diff --git a/scripts/change_url b/scripts/change_url
index 97656f1..9e36543 100644
--- a/scripts/change_url
+++ b/scripts/change_url
@@ -7,7 +7,6 @@
#=================================================
source _common.sh
-source ynh_install_go
source /usr/share/yunohost/helpers
#=================================================
diff --git a/scripts/install b/scripts/install
index d921150..334179c 100644
--- a/scripts/install
+++ b/scripts/install
@@ -7,7 +7,6 @@
#=================================================
source _common.sh
-source ynh_install_go
source /usr/share/yunohost/helpers
#=================================================
@@ -123,7 +122,7 @@ ynh_app_setting_set --app=$app --key=enable_registration_captcha --value=$enable
ynh_script_progression --message="Adding a configuration file..."
# Copy and modify the config file
-ynh_add_config --template="../conf/dendrite.yaml" --destination="$install_dir/dendrite.yaml"
+ynh_add_config --template="dendrite.yaml" --destination="$install_dir/dendrite.yaml"
chmod 400 "$install_dir/dendrite.yaml"
chown $app:$app "$install_dir/dendrite.yaml"
diff --git a/scripts/remove b/scripts/remove
index 2850c89..6bd0c4f 100644
--- a/scripts/remove
+++ b/scripts/remove
@@ -22,39 +22,18 @@ then
yunohost service remove $app
fi
-#=================================================
-# STOP AND REMOVE SERVICE
-#=================================================
-ynh_script_progression --message="Stopping and removing the systemd service..." --weight=1
-
# Remove the dedicated systemd config
ynh_remove_systemd_config
-#=================================================
-# REMOVE LOGROTATE CONFIGURATION
-#=================================================
-ynh_script_progression --message="Removing logrotate configuration..." --weight=1
-
# Remove the app-specific logrotate config
ynh_remove_logrotate
-#=================================================
-# REMOVE NGINX CONFIGURATION
-#=================================================
-ynh_script_progression --message="Removing NGINX web server configuration..." --weight=1
-
# Remove the well-known location
ynh_secure_remove --file="/etc/nginx/conf.d/${server_name}.d/${app}_server_name.conf"
# Remove the dedicated NGINX config
ynh_remove_nginx_config
-#=================================================
-# SPECIFIC REMOVE
-#=================================================
-# REMOVE VARIOUS FILES
-#=================================================
-
# Remove the log files
ynh_secure_remove --file="/var/log/$app"
diff --git a/scripts/restore b/scripts/restore
index 6e481b5..b5a544d 100644
--- a/scripts/restore
+++ b/scripts/restore
@@ -26,13 +26,6 @@ ynh_restore_file --origin_path="$install_dir"
chmod -R o-rwx "$install_dir"
chown -R $app:root "$install_dir"
-#=================================================
-# RESTORE THE NGINX CONFIGURATION
-#=================================================
-ynh_script_progression --message="Restoring the NGINX web server configuration..." --weight=1
-
-ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf"
-
#=================================================
# RESTORE THE POSTGRESQL DATABASE
#=================================================
@@ -41,53 +34,33 @@ ynh_script_progression --message="Restoring the PostgreSQL database..." --weight
ynh_psql_execute_file_as_root --file="./db.sql" --database=$db_name
#=================================================
-# RESTORE VARIOUS FILES
+# RESTORE SYSTEM CONFIGURATIONS
#=================================================
-ynh_script_progression --message="Restoring various files..." --weight=1
+ynh_script_progression --message="Restoring system configurations related to $app..." --weight=1
+
+ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf"
if yunohost --output-as plain domain list | grep -q "^$server_name$"
then
ynh_restore_file --origin_path="/etc/nginx/conf.d/${server_name}.d/${app}_server_name.conf"
fi
-#=================================================
-# RESTORE SYSTEMD
-#=================================================
-ynh_script_progression --message="Restoring the systemd configuration..." --weight=1
-
ynh_restore_file --origin_path="/etc/systemd/system/$app.service"
systemctl enable $app.service --quiet
-#=================================================
-# RESTORE THE LOGROTATE CONFIGURATION
-#=================================================
-ynh_script_progression --message="Restoring the logrotate configuration..." --weight=1
+yunohost service add $app --description="Dendrite Matrix homeserver" --log="/var/log/$app/$app.log" --needs_exposed_ports "$port_tls"
mkdir -p /var/log/$app
chown -R $app:root /var/log/$app
ynh_restore_file --origin_path="/etc/logrotate.d/$app"
#=================================================
-# INTEGRATE SERVICE IN YUNOHOST
+# RELOAD NGINX AND PHP-FPM OR THE APP SERVICE
#=================================================
-ynh_script_progression --message="Integrating service in YunoHost..." --weight=1
-
-yunohost service add $app --description="Dendrite Matrix homeserver" --log="/var/log/$app/$app.log" --needs_exposed_ports "$port_tls"
-
-#=================================================
-# START SYSTEMD SERVICE
-#=================================================
-ynh_script_progression --message="Starting a systemd service..." --weight=1
+ynh_script_progression --message="Reloading NGINX web server and $app's service..." --weight=1
ynh_systemd_action --service_name=$app --action="start" --line_match="Starting external listener" --log_path="systemd"
-#=================================================
-# GENERIC FINALIZATION
-#=================================================
-# RELOAD NGINX
-#=================================================
-ynh_script_progression --message="Reloading NGINX web server..." --weight=1
-
ynh_systemd_action --service_name=nginx --action=reload
#=================================================
diff --git a/scripts/upgrade b/scripts/upgrade
index 5b5ca55..16269c7 100644
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -7,15 +7,8 @@
#=================================================
source _common.sh
-source ynh_install_go
source /usr/share/yunohost/helpers
-#=================================================
-# CHECK VERSION
-#=================================================
-
-upgrade_type=$(ynh_check_app_version_changed)
-
#=================================================
# STANDARD UPGRADE STEPS
#=================================================
@@ -53,7 +46,6 @@ enable_registration_captcha=$(ynh_app_setting_get --app=$app --key=enable_regist
# MIGRATION : Manage old settings
#=================================================
-
# Define $server_name if not already defined
if [ -z ${server_name:-} ]; then
server_name=$domain
@@ -108,23 +100,55 @@ fi
#=================================================
# DOWNLOAD, CHECK AND UNPACK SOURCE
#=================================================
+ynh_script_progression --message="Upgrading source files..." --weight=3
-if [ "$upgrade_type" == "UPGRADE_APP" ]
-then
- ynh_script_progression --message="Upgrading source files..." --weight=3
-
- # Download, check integrity, uncompress and patch the source from app.src
- ynh_setup_source --dest_dir="$install_dir/build" --keep="dendrite.yaml" --full_replace
-fi
+# Download, check integrity, uncompress and patch the source from app.src
+ynh_setup_source --dest_dir="$install_dir/build" --keep="dendrite.yaml" --full_replace
chmod 750 "$install_dir"
chmod -R o-rwx "$install_dir"
chown -R $app:root "$install_dir"
#=================================================
-# NGINX CONFIGURATION
+# SPECIFIC UPGRADE
#=================================================
-ynh_script_progression --message="Upgrading NGINX web server configuration..." --weight=1
+# BUILDING SOURCES AND SETTING UP THE SERVER
+#=================================================
+ynh_script_progression --message="Building the sources (it will take some time)..." --weight=6
+
+ynh_exec_warn_less ynh_install_go --go_version=$GO_VERSION
+
+pushd "$install_dir/build"
+ # Build the sources
+ ynh_use_go
+ export PATH="$PATH"
+ export GOPATH="$install_dir/build/go"
+ export GOCACHE="$install_dir/build/.cache"
+ export CGO_ENABLED=1
+ ynh_exec_warn_less go build -trimpath -v -o "$install_dir/bin/" ./cmd/dendrite
+ ynh_exec_warn_less go build -trimpath -v -o "$install_dir/bin/" ./cmd/create-account
+ ynh_exec_warn_less go build -trimpath -v -o "$install_dir/bin/" ./cmd/generate-keys
+popd
+
+ynh_secure_remove --file="$install_dir/build"
+ynh_remove_go
+
+chown -R $app:root "$install_dir"
+
+#=================================================
+# UPDATE A CONFIG FILE
+#=================================================
+ynh_script_progression --message="Updating a configuration file..." --weight=1
+
+ynh_add_config --template="dendrite.yaml" --destination="$install_dir/dendrite.yaml"
+
+chmod 400 "$install_dir/dendrite.yaml"
+chown $app:$app "$install_dir/dendrite.yaml"
+
+#=================================================
+# REAPPLY SYSTEM CONFIGURATIONS
+#=================================================
+ynh_script_progression --message="Upgrading system configurations related to $app..." --weight=1
# Create a dedicated NGINX config
ynh_add_nginx_config
@@ -135,60 +159,10 @@ then
ynh_add_config --template="server_name.conf" --destination="/etc/nginx/conf.d/${server_name}.d/${app}_server_name.conf"
fi
-#=================================================
-# SPECIFIC UPGRADE
-#=================================================
-# BUILDING SOURCES AND SETTING UP THE SERVER
-#=================================================
-
-if [ "$upgrade_type" == "UPGRADE_APP" ]
-then
- ynh_script_progression --message="Building the sources (it will take some time)..." --weight=6
-
- ynh_exec_warn_less ynh_install_go --go_version=$GO_VERSION
-
- pushd "$install_dir/build"
- # Build the sources
- ynh_use_go
- export PATH="$PATH"
- export GOPATH="$install_dir/build/go"
- export GOCACHE="$install_dir/build/.cache"
- export CGO_ENABLED=1
- ynh_exec_warn_less go build -trimpath -v -o "$install_dir/bin/" ./cmd/dendrite
- ynh_exec_warn_less go build -trimpath -v -o "$install_dir/bin/" ./cmd/create-account
- ynh_exec_warn_less go build -trimpath -v -o "$install_dir/bin/" ./cmd/generate-keys
- popd
-
- ynh_secure_remove --file="$install_dir/build"
- ynh_remove_go
-fi
-
-chown -R $app:root "$install_dir"
-
-#=================================================
-# UPDATE A CONFIG FILE
-#=================================================
-ynh_script_progression --message="Updating a configuration file..."
-
-ynh_add_config --template="../conf/dendrite.yaml" --destination="$install_dir/dendrite.yaml"
-
-chmod 400 "$install_dir/dendrite.yaml"
-chown $app:$app "$install_dir/dendrite.yaml"
-
-#=================================================
-# SETUP SYSTEMD
-#=================================================
-ynh_script_progression --message="Upgrading systemd configuration..." --weight=1
-
# Create a dedicated systemd config
ynh_add_systemd_config
-#=================================================
-# GENERIC FINALIZATION
-#=================================================
-# SETUP LOGROTATE
-#=================================================
-ynh_script_progression --message="Upgrading logrotate configuration..." --weight=1
+yunohost service add $app --description="Dendrite Matrix homeserver" --log="/var/log/$app/$app.log" --needs_exposed_ports "$port_tls"
mkdir -p /var/log/$app
chown -R $app:root /var/log/$app
@@ -196,13 +170,6 @@ chown -R $app:root /var/log/$app
# Use logrotate to manage app-specific logfile(s)
ynh_use_logrotate --non-append
-#=================================================
-# INTEGRATE SERVICE IN YUNOHOST
-#=================================================
-ynh_script_progression --message="Integrating service in YunoHost..." --weight=1
-
-yunohost service add $app --description="Dendrite Matrix homeserver" --log="/var/log/$app/$app.log" --needs_exposed_ports "$port_tls"
-
#=================================================
# START SYSTEMD SERVICE
#=================================================
diff --git a/scripts/ynh_install_go b/scripts/ynh_install_go
deleted file mode 100644
index f801501..0000000
--- a/scripts/ynh_install_go
+++ /dev/null
@@ -1,247 +0,0 @@
-#!/bin/bash
-
-ynh_go_try_bash_extension() {
- if [ -x src/configure ]; then
- src/configure && make -C src || {
- ynh_print_info --message="Optional bash extension failed to build, but things will still work normally."
- }
- fi
-}
-
-goenv_install_dir="/opt/goenv"
-go_version_path="$goenv_install_dir/versions"
-# goenv_ROOT is the directory of goenv, it needs to be loaded as a environment variable.
-export GOENV_ROOT="$goenv_install_dir"
-
-# Load the version of Go for an app, and set variables.
-#
-# ynh_use_go has to be used in any app scripts before using Go for the first time.
-# This helper will provide alias and variables to use in your scripts.
-#
-# To use gem or Go, use the alias `ynh_gem` and `ynh_go`
-# Those alias will use the correct version installed for the app
-# For example: use `ynh_gem install` instead of `gem install`
-#
-# With `sudo` or `ynh_exec_as`, use instead the fallback variables `$ynh_gem` and `$ynh_go`
-# And propagate $PATH to sudo with $ynh_go_load_path
-# Exemple: `ynh_exec_as $app $ynh_go_load_path $ynh_gem install`
-#
-# $PATH contains the path of the requested version of Go.
-# However, $PATH is duplicated into $go_path to outlast any manipulation of $PATH
-# You can use the variable `$ynh_go_load_path` to quickly load your Go version
-# in $PATH for an usage into a separate script.
-# Exemple: $ynh_go_load_path $install_dir/script_that_use_gem.sh`
-#
-#
-# Finally, to start a Go service with the correct version, 2 solutions
-# Either the app is dependent of Go or gem, but does not called it directly.
-# In such situation, you need to load PATH
-# `Environment="__YNH_GO_LOAD_PATH__"`
-# `ExecStart=__FINALPATH__/my_app`
-# You will replace __YNH_GO_LOAD_PATH__ with $ynh_go_load_path
-#
-# Or Go start the app directly, then you don't need to load the PATH variable
-# `ExecStart=__YNH_GO__ my_app run`
-# You will replace __YNH_GO__ with $ynh_go
-#
-#
-# one other variable is also available
-# - $go_path: The absolute path to Go binaries for the chosen version.
-#
-# usage: ynh_use_go
-#
-# Requires YunoHost version 3.2.2 or higher.
-ynh_use_go () {
- go_version=$(ynh_app_setting_get --app=$app --key=go_version)
-
- # Get the absolute path of this version of Go
- go_path="$go_version_path/$go_version/bin"
-
- # Allow alias to be used into bash script
- shopt -s expand_aliases
-
- # Create an alias for the specific version of Go and a variable as fallback
- ynh_go="$go_path/go"
- alias ynh_go="$ynh_go"
-
- # Load the path of this version of Go in $PATH
- if [[ :$PATH: != *":$go_path"* ]]; then
- PATH="$go_path:$PATH"
- fi
- # Create an alias to easily load the PATH
- ynh_go_load_path="PATH=$PATH"
-
- # Sets the local application-specific Go version
- pushd $install_dir
- $goenv_install_dir/bin/goenv local $go_version
- popd
-}
-
-# Install a specific version of Go
-#
-# ynh_install_go will install the version of Go provided as argument by using goenv.
-#
-# This helper creates a /etc/profile.d/goenv.sh that configures PATH environment for goenv
-# for every LOGIN user, hence your user must have a defined shell (as opposed to /usr/sbin/nologin)
-#
-# Don't forget to execute go-dependent command in a login environment
-# (e.g. sudo --login option)
-# When not possible (e.g. in systemd service definition), please use direct path
-# to goenv shims (e.g. $goenv_ROOT/shims/bundle)
-#
-# usage: ynh_install_go --go_version=go_version
-# | arg: -v, --go_version= - Version of go to install.
-#
-# Requires YunoHost version 3.2.2 or higher.
-ynh_install_go () {
- # Declare an array to define the options of this helper.
- local legacy_args=v
- local -A args_array=( [v]=go_version= )
- local go_version
- # Manage arguments with getopts
- ynh_handle_getopts_args "$@"
-
- # Load goenv path in PATH
- local CLEAR_PATH="$goenv_install_dir/bin:$PATH"
-
- # Remove /usr/local/bin in PATH in case of Go prior installation
- PATH=$(echo $CLEAR_PATH | sed 's@/usr/local/bin:@@')
-
- # Move an existing Go binary, to avoid to block goenv
- test -x /usr/bin/go && mv /usr/bin/go /usr/bin/go_goenv
-
- # Install or update goenv
- goenv="$(command -v goenv $goenv_install_dir/bin/goenv | head -1)"
- if [ -n "$goenv" ]; then
- ynh_print_info --message="goenv already seems installed in \`$goenv'."
- pushd "${goenv%/*/*}"
- if git remote -v 2>/dev/null | grep "https://github.com/syndbg/goenv.git"; then
- echo "Trying to update with git..."
- git pull -q --tags origin master
- cd ..
- ynh_go_try_bash_extension
- fi
- popd
- else
- ynh_print_info --message="Installing goenv with git..."
- mkdir -p $goenv_install_dir
- pushd $goenv_install_dir
- git init -q
- git remote add -f -t master origin https://github.com/syndbg/goenv.git > /dev/null 2>&1
- git checkout -q -b master origin/master
- ynh_go_try_bash_extension
- goenv=$goenv_install_dir/bin/goenv
- popd
- fi
-
- goenv_latest="$(command -v "$goenv_install_dir"/plugins/*/bin/goenv-latest goenv-latest | head -1)"
- if [ -n "$goenv_latest" ]; then
- ynh_print_info --message="\`goenv latest' command already available in \`$goenv_latest'."
- pushd "${goenv_latest%/*/*}"
- if git remote -v 2>/dev/null | grep "https://github.com/momo-lab/xxenv-latest.git"; then
- ynh_print_info --message="Trying to update xxenv-latest with git..."
- git pull -q origin master
- fi
- popd
- else
- ynh_print_info --message="Installing xxenv-latest with git..."
- mkdir -p "${goenv_install_dir}/plugins"
- git clone -q https://github.com/momo-lab/xxenv-latest.git "${goenv_install_dir}/plugins/xxenv-latest"
- fi
-
- # Enable caching
- mkdir -p "${goenv_install_dir}/cache"
-
- # Create shims directory if needed
- mkdir -p "${goenv_install_dir}/shims"
-
- # Restore /usr/local/bin in PATH
- PATH=$CLEAR_PATH
-
- # And replace the old Go binary
- test -x /usr/bin/go_goenv && mv /usr/bin/go_goenv /usr/bin/go
-
- # Install the requested version of Go
- local final_go_version=$(goenv latest --print $go_version)
- ynh_print_info --message="Installation of Go-$final_go_version"
- goenv install --skip-existing $final_go_version
-
- # Store go_version into the config of this app
- ynh_app_setting_set --app=$YNH_APP_INSTANCE_NAME --key=go_version --value=$final_go_version
-
- # Cleanup Go versions
- ynh_cleanup_go
-
- # Set environment for Go users
- echo "#goenv
-export GOENV_ROOT=$goenv_install_dir
-export PATH=\"$goenv_install_dir/bin:$PATH\"
-eval \"\$(goenv init -)\"
-#goenv" > /etc/profile.d/goenv.sh
-
- # Load the environment
- eval "$(goenv init -)"
-}
-
-# Remove the version of Go used by the app.
-#
-# This helper will also cleanup Go versions
-#
-# usage: ynh_remove_go
-ynh_remove_go () {
- local go_version=$(ynh_app_setting_get --app=$YNH_APP_INSTANCE_NAME --key=go_version)
-
- # Load goenv path in PATH
- local CLEAR_PATH="$goenv_install_dir/bin:$PATH"
-
- # Remove /usr/local/bin in PATH in case of Go prior installation
- PATH=$(echo $CLEAR_PATH | sed 's@/usr/local/bin:@@')
-
- # Remove the line for this app
- ynh_app_setting_delete --app=$YNH_APP_INSTANCE_NAME --key=go_version
-
- # Cleanup Go versions
- ynh_cleanup_go
-}
-
-# Remove no more needed versions of Go used by the app.
-#
-# This helper will check what Go version are no more required,
-# and uninstall them
-# If no app uses Go, goenv will be also removed.
-#
-# usage: ynh_cleanup_go
-ynh_cleanup_go () {
-
- # List required Go versions
- local installed_apps=$(yunohost app list --output-as json --quiet | jq -r .apps[].id)
- local required_go_versions=""
- for installed_app in $installed_apps
- do
- local installed_app_go_version=$(ynh_app_setting_get --app=$installed_app --key="go_version")
- if [[ $installed_app_go_version ]]
- then
- required_go_versions="${installed_app_go_version}\n${required_go_versions}"
- fi
- done
-
- # Remove no more needed Go versions
- local installed_go_versions=$(goenv versions --bare --skip-aliases | grep -Ev '/')
- for installed_go_version in $installed_go_versions
- do
- if ! `echo ${required_go_versions} | grep "${installed_go_version}" 1>/dev/null 2>&1`
- then
- ynh_print_info --message="Removing of Go-$installed_go_version"
- $goenv_install_dir/bin/goenv uninstall --force $installed_go_version
- fi
- done
-
- # If none Go version is required
- if [[ ! $required_go_versions ]]
- then
- # Remove goenv environment configuration
- ynh_print_info --message="Removing of goenv"
- ynh_secure_remove --file="$goenv_install_dir"
- ynh_secure_remove --file="/etc/profile.d/goenv.sh"
- fi
-}