# - name: Fail if architecture remoteit_device_suffix == "unknown"
#   fail:
#     msg: "Could not find a remote.it Device Package (.deb) for CPU architecture \"{{ ansible_architecture }}\""
#   when: remoteit_device_suffix == "unknown"

# - name: mkdir {{ downloads_dir }}    # As roles/2-common/tasks/fl.yml has not run yet
#   file:
#     path: "{{ downloads_dir }}"    # /opt/iiab/downloads
#     state: directory

# - name: Download {{ remoteit_device_url }} (Device Package) for arch {{ remoteit_device_suffix }} into {{ downloads_dir }}/
#   get_url:
#     url: "{{ remoteit_device_url }}"
#     dest: "{{ downloads_dir }}/"
#     force: yes
#     timeout: "{{ download_timeout }}"

# 2022-04-03: Unfort still necessary, as their install_agent.sh below uses apt
# with 'install -y' instead of '-y reinstall' or '-y --reinstall install'
# FWIW: Some remoteit.*.deb installers also work with '-y --allow-downgrades install'
# (e.g. *.amd64.deb) but others (e.g. both *.rpi.deb) do not.
- name: Purge previously installed 'remoteit*' Device Package(s)
  apt:
    name: remoteit*
    state: absent
    purge: yes
  ignore_errors: yes


# Speeds things up a bit, deferring online claim code generation if not nec:
# https://docs.remote.it/oem-and-bulk-provisioning/registration-into-a-users-account

# - name: "'mkdir /etc/remoteit' e.g. if your 'remoteit_license_key: 592AA9BB-XXXX-YYYY-ZZZZ-6E27654C3DF6' exists in /etc/iiab/local_vars.yml"
#   file:
#     state: directory
#     path: /etc/remoteit
#   when: remoteit_license_key is defined

# - name: "'touch /etc/remoteit/registration' e.g. if your 'remoteit_license_key: 592AA9BB-XXXX-YYYY-ZZZZ-6E27654C3DF6' exists in /etc/iiab/local_vars.yml"
#   file:
#     state: touch
#     path: /etc/remoteit/registration
#   when: remoteit_license_key is defined

- name: "'mkdir /etc/remoteit'"
  file:
    state: directory
    path: /etc/remoteit

- name: "'touch /etc/remoteit/registration' (might contain a remoteit_license_key) to prevent generation of claim code below; also speeding things up a bit"
  file:
    state: touch
    path: /etc/remoteit/registration


# - name: "Install Device Package: {{ downloads_dir }}/{{ remoteit_deb }}"
#   apt:
#     deb: "{{ downloads_dir }}/{{ remoteit_deb }}"

# - name: "Install Device Package: {{ remoteit_device_url }}"
#   apt:
#     deb: "{{ remoteit_device_url }}"

# 2022-04-29: https://downloads.remote.it/remoteit/install_agent.sh refuses to
# install on Mint as "ID_LIKE=ubuntu" in /etc/os-release is lowercase.  So we
# add a tag with the word 'Ubuntu' containing an uppercase 'U' as a workaround.
# (This hack can later be removed, if remote.it adjusts install_agent.sh above)
- name: If Linux Mint, add "IIAB_LIKE=Ubuntu" to /etc/os-release to force install of remote.it
  # shell: echo "IIAB_LIKE=Ubuntu" >> /etc/os-release
  lineinfile:
    path: /etc/os-release
    line: IIAB_LIKE=Ubuntu
  when: is_linuxmint

# - name: Install remote.it Device Package for your CPU/OS, using https://downloads.remote.it/remoteit/install_agent.sh -- this puts a claim code in /etc/remoteit/config.json which is valid for 24h
- name: Install remote.it Device Package for your CPU/OS, using https://downloads.remote.it/remoteit/install_agent.sh
  shell: curl -L https://downloads.remote.it/remoteit/install_agent.sh | sh

# 2022-06-29: Ansible misinterprets "IIAB_LIKE=Ubuntu" (interpreting the entire
# OS as Ubuntu instead of Mint, on later Ansible runs) so let's remove line now.
- name: If Linux Mint, remove above "IIAB_LIKE=Ubuntu" from /etc/os-release (for Ansible's sloppy OS recognition logic)
  lineinfile:
    path: /etc/os-release
    line: IIAB_LIKE=Ubuntu
    state: absent
  when: is_linuxmint


# 2022-10-09: Let's keep the file (empty or not!)  If it exists with size zero
# bytes, enable-or-disable.yml or /usr/bin/iiab-remoteit delete it later as nec.
# - name: "'rm /etc/remoteit/registration' (empty file used just above)"
#   file:
#     state: absent
#     path: /etc/remoteit/registration
#   ignore_errors: yes    # In case a future version of install_agent.sh deletes it for us


- name: Install /usr/bin/iiab-remoteit from template -- so IIAB operators can quickly enable remote.it AND generate a new remote.it claim code (in /etc/remoteit/config.json) -- optionally downloading + installing the very latest Device Package (like the 2 steps above)
  template:
    src: iiab-remoteit
    dest: /usr/bin
    mode: 0755

- name: Install /usr/bin/iiab-remoteit-off from template -- so IIAB operators can quickly turn off AND disable remote.it services on this IIAB
  template:
    src: iiab-remoteit-off
    dest: /usr/bin
    mode: 0755


- name: Fail if architecture remoteit_arch == "unknown"
  fail:
    msg: "Could not find a remote.it CLI binary for CPU architecture \"{{ ansible_architecture }}\""
  when: remoteit_arch == "unknown"

- name: Download OPTIONAL {{ remoteit_cli_url }} (CLI) to /usr/bin/remoteit (755)
  get_url:
    url: "{{ remoteit_cli_url }}"
    dest: /usr/bin/remoteit
    mode: 0755
    force: yes
    timeout: "{{ download_timeout }}"


# RECORD remote.it AS INSTALLED

- name: "Set 'remoteit_installed: True'"
  set_fact:
    remoteit_installed: True

- name: "Add 'remoteit_installed: True' to {{ iiab_state_file }}"
  lineinfile:
    path: "{{ iiab_state_file }}"    # /etc/iiab/iiab_state.yml
    regexp: '^remoteit_installed'
    line: 'remoteit_installed: True'
