---

- name: Check if update is available
  command: php occ update:check --no-interaction
  args:
    chdir: "{{ nextcloud_installation_dir }}"
  become: true
  become_user: "{{ nextcloud_file_owner }}"
  register: _result
  changed_when: _result.stdout | regex_search('^Nextcloud .* is available')
  failed_when: _result is failed

- name: Make files writable by php user
  file:
    path: "{{ nextcloud_installation_dir }}"
    mode: u=rwX,g=rX,o=rX
    owner: "{{ nextcloud_file_owner }}"
    group: "{{ nextcloud_file_owner }}"
    recurse: true
  when: _result.stdout | regex_search('^Nextcloud .* is available')
  # Make sure to correctly set file permissions after the installation
  notify: nextcloud set file permissions

- name: Update Nextcloud installation
  command: php updater/updater.phar --no-interaction
  args:
    chdir: "{{ nextcloud_installation_dir }}"
  become: true
  become_user: "{{ nextcloud_file_owner }}"
  register: _result
  failed_when:
    - _result is failed
    - _result.stdout is not search('Update successful')
  # We only check for an upgrade of Nextcloud itself, not of the apps
  when: _result.stdout | regex_search('^Nextcloud .* is available')

- name: Check if upgrade is needed
  command: php occ status
  args:
    chdir: "{{ nextcloud_installation_dir }}"
  register: nextcloud_status
  changed_when: false
  become: true
  become_user: "{{ nextcloud_file_owner }}"

- name: Upgrade Nextcloud installation
  command: php occ upgrade
  args:
    chdir: "{{ nextcloud_installation_dir }}"
  become: true
  become_user: "{{ nextcloud_file_owner }}"
  when: >-
    nextcloud_status.stdout
      is search('Nextcloud or one of the apps require upgrade')