---
- name: Ensure download directory is present
  ansible.builtin.file:
    path: "/opt/restic-{{ restic_version }}"
    state: directory
    mode: '0755'

- name: Ensure compressed binary is downloaded
  ansible.builtin.get_url:
    url: "https://github.com/restic/restic/releases/download/v{{ restic_version }}/restic_{{ restic_version }}_linux_arm64.bz2"
    dest: "/opt/restic-{{ restic_version }}/restic-{{ restic_version }}.bz2"
  register: res

- name: Ensure binary is decompressed
  ansible.builtin.shell:
    cmd: "bunzip2 -k /opt/restic-{{ restic_version }}/restic-{{ restic_version }}.bz2"
  when: 'res.changed'

- name: Ensure binary is copied to correct location
  ansible.builtin.copy:
    src: "/opt/restic-{{ restic_version }}/restic-{{ restic_version }}"
    remote_src: true
    dest: '/usr/local/bin/restic'
    owner: 'root'
    group: 'root'
    mode: '0755'
  when: 'res.changed'

- name: Ensure backup scripts directory is present
  ansible.builtin.file:
    path: '/etc/backups'
    state: directory
    mode: '0755'

- name: Ensure Restic backups password file is present
  ansible.builtin.copy:
    src: 'restic_backups_passwd'
    dest: '/etc/backups/restic_backups_passwd'
    owner: root
    group: root
    mode: '0600'

- name: Ensure backup-all script is present
  ansible.builtin.template:
    src: "backup-all.sh.j2"
    dest: '/etc/backups/backup-all.sh'
    owner: root
    group: root
    mode: '0644'

- name: Ensure backup cronjob is enabled
  ansible.builtin.cron:
    name: 'Perform nightly backups'
    minute: '0'
    hour: '2'
    job: '/usr/bin/bash /etc/backups/backup-all.sh'
