From bb65d1953a44acd0f3640c721fd164984806ad95 Mon Sep 17 00:00:00 2001
From: Arthur BOUDREAULT <arthur@lydra.fr>
Date: Thu, 3 Feb 2022 13:41:56 +0100
Subject: [PATCH] feat: adds symlinks management

---
 README-FR.md                      |  1 +
 README.md                         |  1 +
 roles/ynh_setup/README-FR.md      |  9 +++++++++
 roles/ynh_setup/README.md         |  4 ++++
 roles/ynh_setup/defaults/main.yml |  5 +++++
 roles/ynh_setup/tasks/main.yml    | 31 +++++++++++++++++++++++++++++++
 6 files changed, 51 insertions(+)

diff --git a/README-FR.md b/README-FR.md
index 5876a48..1ad3f34 100644
--- a/README-FR.md
+++ b/README-FR.md
@@ -45,6 +45,7 @@ Ces tags sont applicables suivant les rôles.
 |smtp|Tâches liées aux paramètres de relais smtp de Yunohost.|
 |backup|Tâches liées aux sauvegardes de Yunohost.|
 |pkg|Tâches d'installation de paquets.|
+|linux|Tâches liées à l'OS Linux.|
 
 ## License
 
diff --git a/README.md b/README.md
index 1690d7d..239c7bc 100644
--- a/README.md
+++ b/README.md
@@ -45,6 +45,7 @@ These tags are applicable to roles.
 |smtp|Tasks related to Yunohost smtp relay settings.|
 |backup|Tasks related to Yunohost backups.|
 |pkg|Tasks that install packages.|
+|linux|Tasks related to Linux OS.|
 
 ## License
 
diff --git a/roles/ynh_setup/README-FR.md b/roles/ynh_setup/README-FR.md
index 914afac..2577b6d 100644
--- a/roles/ynh_setup/README-FR.md
+++ b/roles/ynh_setup/README-FR.md
@@ -19,11 +19,20 @@ Les variables par défaut sont disponibles dans `default/main.yml` cependant il
 ynh_install_script_url: https://install.yunohost.org
 
 ynh_admin_password: MYINSECUREPWD_PLZ_OVERRIDE_THIS
+
+ynh_symlink:
+  enabled: True
+  appdata_dir: "/data/var/"
+  conf_dir: "/data/etc/"
 ```
 
 - `ynh_install_script_url` est le script d'installation des packages Yunohost, par défaut c'est le script officiel. Yunohost ne s'installe que sur Debian 10.
 - `ynh_admin_password` est le mot de passe permettant d'accéder à l’interface d’administration du serveur.
 
+- `ynh_symlink.enabled`: active les liens symboliques. Mettez la valeur à `True`.
+- `ynh_symlink.appdata_dir`: Il s'agit du répertoire où stocker votre lien symbolique vers les applications Yunohost.
+- `ynh_symlink.conf_dir`: Il s'agit du répertoire où stocker votre lien symbolique vers les fichiers de configuration Yunohost.
+
 ### Gestion des domaines
 
 ```yml
diff --git a/roles/ynh_setup/README.md b/roles/ynh_setup/README.md
index 2433777..3d43b27 100644
--- a/roles/ynh_setup/README.md
+++ b/roles/ynh_setup/README.md
@@ -24,6 +24,10 @@ ynh_admin_password: MYINSECUREPWD_PLZ_OVERRIDE_THIS
 - `ynh_install_script_url` downloads official Yunohost script for installing Yunohost packages. Yunohost is only available on Debian 10.
 - `ynh_admin_password` is the password used to access to the server's administration interface.
 
+- `ynh_symlink.enabled`: enables symbolic links. Set the value to `True`.
+- `ynh_symlink.appdata_dir`: This is the directory where you store your symbolic link to Yunohost applications.
+- `ynh_symlink.conf_dir`: This is the directory where you store your symbolic link to the Yunohost configuration files.
+
 ### Domain management
 
 ```yml
diff --git a/roles/ynh_setup/defaults/main.yml b/roles/ynh_setup/defaults/main.yml
index 3ccb2e0..cf73cb6 100644
--- a/roles/ynh_setup/defaults/main.yml
+++ b/roles/ynh_setup/defaults/main.yml
@@ -23,6 +23,11 @@ ynh_install_script_url: https://install.yunohost.org
 
 ynh_admin_password: MYINSECUREPWD_PLZ_OVERRIDE_THIS
 
+ynh_symlink:
+  enabled: True
+  appdata_dir: "/data/var"
+  conf_dir: "/data/etc/"
+
 # The list of Yunohost domains.
 ynh_main_domain: domain.tld
 ynh_extra_domains: null
diff --git a/roles/ynh_setup/tasks/main.yml b/roles/ynh_setup/tasks/main.yml
index 0fcdbfd..17c5efd 100644
--- a/roles/ynh_setup/tasks/main.yml
+++ b/roles/ynh_setup/tasks/main.yml
@@ -26,6 +26,37 @@
     state: present
   tags:
     - pkg
+    - linux
+
+- name: Create apps and config directories
+  ansible.builtin.file:
+    path: "{{ item }}"
+    state: directory
+    mode: 0770
+  loop:
+    - "{{ ynh_symlink.appdata_dir }}"
+    - "{{ ynh_symlink.conf_dir }}"
+  tags:
+    - linux
+  when: ynh_symlink.enabled
+
+- name: Create symbolic link for Yunohost apps data directory
+  ansible.builtin.file:
+    src: /var/www/
+    dest: "{{ ynh_symlink.appdata_dir }}/www_symlink"
+    state: link
+  tags:
+    - linux
+  when: ynh_symlink.enabled
+
+- name: Create symbolic link for Yunohost configuration directory
+  ansible.builtin.file:
+    src: /etc/yunohost/
+    dest: "{{ ynh_symlink.conf_dir }}/yunohost_symlink"
+    state: link
+  tags:
+    - linux
+  when: ynh_symlink.enabled
 
 - name: Test if Yunohost is already installed
   ansible.builtin.stat: path=/etc/yunohost/installed
-- 
GitLab