---
#-----------------------------------------------------------------------------#
# 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: Download BorgBackup role on localhost
  ansible.builtin.command: ansible-galaxy install m3nu.ansible_role_borgbackup,"{{ m3nu_ansible_role_borgbackup_version }}" -p "{{ _ansible_role_directory }}"
  delegate_to: localhost
  become: False
  tags:
    - backup
    - borg

- name: Gather facts for BorgBackup role
  ansible.builtin.setup:
  tags:
    - borg
    - backup

- name: Run BorgBackup role
  ansible.builtin.import_role:
    name: m3nu.ansible_role_borgbackup
  tags:
    - backup
    - borg

- name: Install specific version of Borgmatic
  ansible.builtin.pip:
    name: "borgmatic"
    version: "{{ borgmatic_version }}"
    virtualenv: /opt/borgmatic
  tags:
    - backup
    - borg

- name: Create backup folder for BorgBackup repository
  ansible.builtin.file:
    path: "{{ borg_repository }}"
    state: directory
    mode: '0750'
  tags:
    - backup
    - borg

- name: Configure host for Borg Remote repository
  tags:
    - backup
    - borg
  block:
    - name: deploy ssh public key for BorgBackup
      ansible.builtin.copy:
        src:   "{{ borg_ssh_keys_src }}.pub"
        dest:  "{{ borg_ssh_keys_dest }}.pub"
        owner: "root"
        group: "root"
        mode:  0600

    - name: deploy ssh private key for BorgBackup
      ansible.builtin.copy:
        src:   "{{ borg_ssh_keys_src }}.vault"
        dest:  "{{ borg_ssh_keys_dest }}"
        owner: "root"
        group: "root"
        mode:  0600
  when: ynh_borg_backup_remote_repo

- name: change SSH command in "/etc/borgmatic/{{ borgmatic_config_name }}"
  ansible.builtin.lineinfile:
    path: "/etc/borgmatic/{{ borgmatic_config_name }}"
    regexp: "# ssh_command: ssh -i ~/.ssh/id_ed25519"
    line: "{{ ynh_ssh_borg_command }}"
    state: present
  when: ynh_ssh_borg_command is defined
  tags:
    - backup
    - borg


- name: change archive name in "/etc/borgmatic/{{ borgmatic_config_name }}"
  ansible.builtin.lineinfile:
    path:   "/etc/borgmatic/{{ borgmatic_config_name }}"
    regexp: "archive_name_format:"
    line: "    archive_name_format: {{ borg_archive_name_format }}"
    state: present
  tags:
    - backup
    - borg

- name: Create borg launch script in /usr/local/bin
  ansible.builtin.copy:
    content: |
      #!/bin/bash
      . /opt/borgmatic/bin/activate
      borg "$@"
    dest:  /usr/local/bin/borg
    owner: root
    group: root
    mode: "0755"
  tags:
    - backup
    - borg

- name: Initialize a new Borg repository
  ansible.builtin.command: "{{ borg_init_command }}"
  tags:
    - backup
    - borg
