---
#-----------------------------------------------------------------------------#
# ansible-yunohost allows to deploy Yunohost using Ansible                    #
# Copyright 2021-present Lydra https://www.lydra.fr/                          #
#                                                                             #
# this program is free software: you can redistribute it and/or modify        #
# it under the terms of the GNU General Public License as published by        #
# the Free Software Foundation, either version 3 of the License, or           #
# (at your option) any later version.                                         #
#                                                                             #
# this program is distributed in the hope that it will be useful,             #
# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the                #
# GNU General Public License for more details.                                #
#                                                                             #
# You should have received a copy of the GNU General Public License           #
# along with this program. If not, see <http://www.gnu.org/licenses/>.        #
#                                                                             #
#-----------------------------------------------------------------------------#

- name: Install requirements
  ansible.builtin.apt:
    name:
      - git
      - dialog
    state: present
  tags:
    - pkg
    - linux

- name: Create data and config subdirs of Yunohost
  ansible.builtin.file:
    path: "{{ item.path }}"
    state: directory
    mode: "0755"
  with_items:
    - "{{ ynh_data_dirs }}"
  tags:
    - linux
  when: ynh_data_dirs_enabled

- name: Create symbolic links for Yunohost subdirs
  ansible.builtin.file:
    src: "{{ item.path }}"
    dest: "{{ item.link }}"
    state: link
  with_items:
    - "{{ ynh_data_dirs }}" 
  tags:
    - linux
  when: ynh_data_dirs_enabled

- name: Test if Yunohost is already installed
  ansible.builtin.stat: path=/etc/yunohost/installed
  register: ynh_file_install
  tags:
    - yunohost

- name: Download Yunohost install script
  ansible.builtin.get_url:
    url: "{{ ynh_install_script_url }}"
    dest: /tmp/install_yunohost.sh
    mode: 700
  when: not ynh_file_install.stat.exists
  tags:
    - yunohost

- name: Launch Yunohost install script
  ansible.builtin.command: /tmp/install_yunohost.sh -a
  when: not ynh_file_install.stat.exists
  tags:
    - yunohost

- name: Launch Yunohost postinstall
  ansible.builtin.command:
    yunohost tools postinstall \
      --domain "{{ ynh_main_domain }}" \
      --password "{{ ynh_admin_password }}" \
      {% if ynh_ignore_dyndns_server %} --ignore-dyndns {% endif %}
  when: not ynh_file_install.stat.exists
  tags:
    - yunohost
    - domains

- name: Create extra domains
  ansible.builtin.include_tasks: domains.yml
  when: ynh_extra_domains
  tags:
    - yunohost
    - domains

- name: Run first Yunohost diagnosis
  ansible.builtin.command: yunohost diagnosis run
  when: not ynh_file_install.stat.exists
  tags:
    - yunohost

- name: Install domain certificates
  ansible.builtin.command: yunohost domain cert-install
  changed_when: False
  tags:
    - yunohost

- name: Add Yunohost users
  ansible.builtin.include_tasks: users.yml
  when: ynh_users
  tags:
    - yunohost
    - users
