# 0. SET CPU ARCHITECTURE

- name: "Initialize 'kiwix_src_dir: False' just in case CPU architecture is not supported"
  set_fact:
    kiwix_src_dir: False

- name: "Set fact 'kiwix_src_dir: {{ kiwix_version_armhf }}' (armv6l or armv71)"
  set_fact:
    kiwix_src_dir: "{{ kiwix_version_armhf }}"
  when: ansible_machine == "armv7l" or ansible_machine == "armv6l" or ansible_machine == "aarch64"

- name: "Set fact 'kiwix_src_dir: {{ kiwix_version_linux64 }}' (x86_64)"
  set_fact:
    kiwix_src_dir: "{{ kiwix_version_linux64 }}"
  when: ansible_machine == "x86_64"

- name: "Set fact 'kiwix_src_dir: {{ kiwix_version_i686 }}' (i686)"
  set_fact:
    kiwix_src_dir: "{{ kiwix_version_i686 }}"
  when: ansible_machine == "i686"
# COMMENT OUT LINE ABOVE TO TEST i686 CODE PATH ON X86_64 (WORKS NOV 2017)

- name: Force Ansible to exit (FAIL) if kiwix-tools appears unavailable for your architecture ({{ ansible_machine }})
  fail:
    msg: "WARNING: kiwix-tools SOFTWARE APPEARS UNAVAILABLE FOR YOUR {{ ansible_machine }} OS/ARCHITECTURE."
  when: not kiwix_src_dir

- name: "Set fact 'kiwix_src_file: {{ kiwix_src_dir }}.tar.gz'"
  set_fact:
    kiwix_src_file: "{{ kiwix_src_dir }}.tar.gz"


# 1. PUT IN PLACE: /opt/iiab/downloads/kiwix-tools_linux-*.tar.gz, essential dirs, and test.zim if nec (library.xml is created later, by enable-or-disable.yml)

- name: Download {{ iiab_download_url }}/{{ kiwix_src_file }} to /opt/iiab/downloads
  get_url:
    url: "{{ iiab_download_url }}/{{ kiwix_src_file }}"    # http://download.iiab.io/packages
    dest: "{{ downloads_dir }}/{{ kiwix_src_file }}"    # /opt/iiab/downloads
    timeout: "{{ download_timeout }}"
  when: internet_available

- name: "Create dirs, including parent dirs: {{ kiwix_path }}/bin (executables), {{ iiab_zim_path }}/content (ZIM files), {{ iiab_zim_path }}/index (legacy indexes)"
  file:
    path: "{{ item }}"
    state: directory
  with_items:
    - "{{ kiwix_path }}/bin"           # /opt/iiab/kiwix
    - "{{ iiab_zim_path }}/content"    # /library/zims
    - "{{ iiab_zim_path }}/index"

- name: Count *.zim files in {{ iiab_zim_path }}/content
  find:
    paths: "{{ iiab_zim_path }}/content"
    patterns: '*.zim'
  register: kiwix_zims

- name: If there were none, install {{ iiab_zim_path }}/content/test.zim
  copy:
    src: test.zim
    dest: "{{ iiab_zim_path }}/content/test.zim"
    #force: no
  when: kiwix_zims.matched == 0


# 2. INSTALL KIWIX-TOOLS EXECUTABLES

- name: Unarchive {{ kiwix_src_file }} to /tmp    # e.g. kiwix-tools_linux-armhf-3.1.2-3.tar.gz
  unarchive:
    src: "{{ downloads_dir }}/{{ kiwix_src_file }}"
    dest: /tmp

- name: Move /tmp/{{ kiwix_src_dir }}/* to permanent location {{ kiwix_path }}/bin
  shell: "mv /tmp/{{ kiwix_src_dir }}/* {{ kiwix_path }}/bin/"    # /opt/iiab/kiwix


# 3. ENABLE MODS FOR APACHE PROXY IF DEBUNTU

# 2019-10-07: Moved to roles/httpd/tasks/main.yml
# 2019-09-29: Compare roles/kolibri/defaults/main.yml using just 1 (proxy_http)
#- name: Enable the 4 mods which permit Apache to proxy (debuntu)
#  apache2_module:
#    name: "{{ item }}"
#  with_items:
#    - proxy
#    - proxy_html
#    - proxy_http
#    - rewrite
#  when: is_debuntu


# 4. INSTALL iiab-make-kiwix-lib*, kiwix-serve.service, kiwix.conf for Apache

- name: 'Install from templates: kiwix-serve.service, iiab-make-kiwix-lib, iiab-make-kiwix-lib.py'
  template:
    src: "{{ item.src }}"
    dest: "{{ item.dest }}"
    mode: "{{ item.mode }}"
  with_items:
    - { src: 'kiwix-serve.service.j2', dest: '/etc/systemd/system/kiwix-serve.service', mode: '0644' }
    - { src: 'iiab-make-kiwix-lib', dest: '/usr/bin/iiab-make-kiwix-lib', mode: '0755' }
    - { src: 'iiab-make-kiwix-lib3.py', dest: '/usr/bin/iiab-make-kiwix-lib.py', mode: '0755' }

- name: daemon_reload, so systemd (re)reads newly installed kiwix-serve.service
  systemd:
    daemon_reload: yes

- name: "Install from template: /etc/{{ apache_conf_dir }}/kiwix.conf"
  template:
    src: kiwix.conf.j2
    dest: "/etc/{{ apache_conf_dir }}/kiwix.conf"    # apache2/sites-available
    #mode: '0644'
  when: apache_installed is defined

# install kiwix app
- name: Install Kiwix Android app
  include_tasks: kiwix-apk.yml
  when: kiwix_incl_apk


# 5. RECORD Kiwix AS INSTALLED

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

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