---
- name: "Ensure yay is installed"
  block:
    - name: Ensure yay's source directory is present
      file:
        path: "{{ yay_src_dir }}"
        owner: "{{ ansible_user | default(lookup('env', 'USER')) }}"
        state: directory
        mode: 0755
    - name: Ensure yay's source is cloned and up-to-date
      become: false
      git:
        dest: "{{ yay_src_dir }}"
        repo: "{{ yay_aur_git_repository }}"
        version: master
      register: yay_git
    - name: Remove /usr/bin/yay if the source files have changed
      file:
        path: /usr/bin/yay
        state: absent
      when: yay_git.changed
    - name: Ensure yay is installed
      become: false
      shell: |
        makepkg -sic --noconfirm
      args:
        chdir: "{{ yay_src_dir }}"
        creates: /usr/bin/yay

- name: "Ensure {{ app_name }}'s dependencies are installed"
  community.general.pacman:
    name: "{{ sanoid_dependencies }}"
    state: "{{ app_state | default('present') }}"
    update_cache: "{{ omit if skip_package_cache_update is defined else 'true' }}"

- name: "Ensure {{ app_name }}'s dependencies are installed (AUR)" # noqa 301
  become: false
  command: "yay -Sa {{ item }} --noconfirm"
  loop: "{{ sanoid_dependencies_aur }}"

- name: "Ensure {{ app_name }}'s source directory is present"
  file:
    mode: 0755
    path: "{{ sanoid_src_dir }}"
    owner: "{{ ansible_user | default(lookup('env', 'USER')) }}"
    state: directory

- name: "Ensure {{ app_name }}'s source is cloned and up-to-date"
  become: false
  git:
    dest: "{{ sanoid_src_dir }}"
    repo: "{{ sanoid_aur_git_repository }}"
    version: master
  register: sanoid_git

- name: "Remove /usr/bin/sanoid if the source files have changed" # noqa 503
  file:
    path: /usr/bin/sanoid
    state: absent
  when: sanoid_git.changed

- name: "Ensure {{ app_name }} is installed"
  become: false
  command: makepkg -sic --noconfirm
  args:
    chdir: "{{ sanoid_src_dir }}"
    creates: /usr/bin/sanoid

- name: Run generic configuration tasks
  include_tasks: config-Linux.yml
