---
- name: Ensure git repository folder exists
  become: true
  file:
    path: "{{ project.folder }}"
    owner: "{{ project.user | default(ansible_user | default(lookup('env', 'USER'))) }}"
    mode: 0740
    state: directory

- name: Check if git already exists
  stat:
    path: "{{ project.folder }}/.git"
  register: git_folder

- name: Clone the repository if it does not already exist
  become: true
  become_user: "{{ project.user | default(ansible_user | default(lookup('env', 'USER'))) }}"
  git:
    depth: "1"
    dest: "{{ project.folder }}"
    repo: "{{ project.repo }}"
    version: master
  when: not git_folder.stat.exists

- name: Restore containers if the repository was freshly cloned
  become: true
  become_user: "{{ project.user | default(ansible_user | default(lookup('env', 'USER'))) }}"
  command: docker-compose-backup restore
  args:
    chdir: "{{ project.folder }}"
  when: not git_folder.stat.exists

- name: Backup containers if git repository was already present
  become: true
  become_user: "{{ project.user | default(ansible_user | default(lookup('env', 'USER'))) }}"
  command: docker-compose-backup backup
  args:
    chdir: "{{ project.folder }}"
  when: git_folder.stat.exists

- name: Ensure backup cron-job is in place
  become: true
  cron:
    name: "{{ project.name }} Daily Backup Job"
    minute: "0"
    hour: "{{ git_docker_backup_time }}"
    user: "{{ project.user | default(ansible_user | default(lookup('env', 'USER'))) }}"
    job: |
      {%if (healthcheck_endpoint is defined) and (project.healthcheck_id is defined) %}
      curl -fsS -m 10 --retry 5 -o /dev/null https://{{ healthcheck_endpoint }}/ping/{{ project.healthcheck_id }}/start
      {% endif %}
      cd {{ project.folder }}
      m=$(docker-compose-backup backup 2>&1)
      {%if (healthcheck_endpoint is defined) and (project.healthcheck_id is defined) %}
      curl -fsS -m 10 --retry 5 --data-raw "$m" "https://{{ healthcheck_endpoint }}/ping/{{ project.healthcheck_id }}$([ $? -ne 0 ] && echo -n /fail)"
      {% endif %}
    cron_file: "{{ project.name | lower }}-backup-job"
