---
# tasks to install gcloud via archive
- name: gcloud | Archive | Look for existing Google Cloud SDK installation
  ansible.builtin.stat:
    path: "{{ gcloud_archive_path }}/google-cloud-sdk/VERSION"
  register: gcloud_status

- name: gcloud | Archive | Get gcloud_status
  ansible.builtin.debug: var=gcloud_status

- name: gcloud | Archive | Set installed version if installation exists
  block:
    - name: gcloud | Archive | Importing contents of ./google-cloud-sdk/VERSION in {{ gcloud_archive_path }}
      ansible.builtin.slurp:
        src: "{{ gcloud_archive_path }}/google-cloud-sdk/VERSION"
      register: gcloud_installed_version_data
    - name: gcloud | Archive | Setting the gcloud_installed_version variable/fact
      ansible.builtin.set_fact:
        gcloud_installed_version: "{{ (gcloud_installed_version_data.content|b64decode|trim) }}"
    - name: gcloud | Archive | get the gcloud_installed_version
      ansible.builtin.debug:
        msg: "google-cloud-sdk: {{ gcloud_installed_version }} is installed"
    - name: gcloud | Archive | Version already installed
      ansible.builtin.debug:
        msg: >-
          Skipping installation of google-cloud-sdk version {{ gcloud_version }} when
          {{ gcloud_installed_version }} is already installed.
      when: gcloud_version == gcloud_installed_version
  when: gcloud_status.stat.exists

- name: gcloud | Archive | Start installation
  ansible.builtin.include_tasks: archive_install.yml
  when: gcloud_installed_version is undefined or
        gcloud_version is version(gcloud_installed_version, '>')

- name: gcloud | Debian | Install the google-cloud-sdk additional components # noqa 301
  ansible.builtin.command: gcloud components install {{ item }}
  register: gcloud_install_comp_status
  changed_when: "'All components are up to date.' not in gcloud_install_comp_status.stderr_lines"
  loop: "{{ gcloud_additional_components }}"
