---
- name: "Ensure {{ app_name }} is installed"
  chocolatey.chocolatey.win_chocolatey:
    name: virtualbox
    state: present
  register: vbox_installation

- name: "Setup {{ app_name }} Extension pack"
  block:
    - name: "Find the installed version of {{ app_name }}"
      chocolatey.chocolatey.win_chocolatey_facts:
    - name: "Save the version of {{ app_name }} to a variable"
      set_fact:
        vbox_version: "{{ ansible_chocolatey.packages | selectattr('package','equalto','virtualbox') | map(attribute='version') | join(' ') }}"
    - name: "Ensure {{ app_name }} Extension pack installer is downloaded"
      ansible.windows.win_get_url:
        url: "{{ 'https://download.virtualbox.org/virtualbox/' + vbox_version + '/Oracle_VM_VirtualBox_Extension_Pack-' + vbox_version + '.vbox-extpack' }}"
        dest: "C:/Program Files/Oracle/VirtualBox/Oracle_VM_VirtualBox_Extension_Pack.vbox-extpack"
    - name: "Ensure {{ app_name }} Extension pack is installed"
      ansible.windows.win_shell: |
        echo y | VBoxManage extpack install --replace ./Oracle_VM_VirtualBox_Extension_Pack.vbox-extpack
      args:
        chdir: "C:/Program Files/Oracle/VirtualBox/"
  when: vbox_installation.changed
  always:
    - name: "Remove {{ app_name }} Extension pack installer"
      ansible.windows.win_file:
        path: "C:/Program Files/Oracle/VirtualBox/Oracle_VM_VirtualBox_Extension_Pack.vbox-extpack"
        state: absent

- name: Run user configuration tasks
  include_tasks: user-Windows.yml
  loop: "{{ user_configs }}"
  loop_control:
    label: "{{ user.username }}"
    loop_var: user
  when: (user.system is not defined) or ((user.system is defined) and (not user.system))
