---
- name: file_download | Downloading...
  debug:
    msg:
      - "URL: {{ download.url }}"
      - "Dest: {{ download.dest }}"

- name: file_download | Create dest directory
  file:
    path: "{{download.dest|dirname}}"
    state: directory
    recurse: yes
  when:
    - download.enabled
    - download.file
    - group_names | intersect(download.groups) | length

- name: file_download | Download item
  get_url:
    url: "{{download.url}}"
    dest: "{{download.dest}}"
    sha256sum: "{{download.sha256 | default(omit)}}"
    owner: "{{ download.owner|default(omit) }}"
    mode: "{{ download.mode|default(omit) }}"
    validate_certs: "{{ download_validate_certs }}"
    url_username: "{{ download.username|default(omit) }}"
    url_password: "{{ download.password|default(omit) }}"
    force_basic_auth: "{{ download.force_basic_auth|default(omit) }}"
  register: get_url_result
  until: "'OK' in get_url_result.msg or 'file already exists' in get_url_result.msg"
  retries: 4
  delay: "{{ retry_stagger | default(5) }}"
  when:
    - download.enabled
    - download.file
    - group_names | intersect(download.groups) | length

- name: file_download | Extract archives
  unarchive:
    src: "{{download.dest}}"
    dest: "{{download.dest|dirname}}"
    owner: "{{ download.owner|default(omit) }}"
    mode: "{{ download.mode|default(omit) }}"
    copy: no
  when:
    - download.enabled
    - download.file
    - download.unarchive|default(False)
    - group_names | intersect(download.groups) | length