- name: Make the required directories for Maps
  file:
    path: "{{ item }}"
    state: directory
    mode: '0755'
  with_items:
    - "{{ vector_map_path }}/test-page/assets"    # /library/www/osm-vector-maps
    - "{{ vector_map_path }}/maplist/assets"
    - "{{ vector_map_path }}/viewer/assets"
    - "{{ vector_map_path }}/viewer/tiles"
    - "{{ vector_map_path }}/installer"

- name: Copy the map catalog to /etc/iiab/map-catalog.json
  get_url:
    url: "{{ map_catalog_url }}/map-catalog.json"    # http://download.iiab.io/content/OSM/vector-tiles
    dest: "{{ iiab_etc_path }}"    # /etc/iiab

- name: Download map catalog {{ iiab_map_url }}/assets/regions.json to {{ iiab_etc_path }}
  get_url:
    url: "{{ iiab_map_url }}/assets/regions.json"    # http://download.iiab.io/content/OSM/vector-tiles/maplist/hidden
    dest: "{{ iiab_etc_path }}"

- name: Check for existence of cities database
  stat:
    path: "{{ vector_map_path }}/cities1000.sqlite"
  register: cities_installed

- name: Fetch the city database
  get_url:
    url: "{{ iiab_map_url }}/regional-resources/cities1000.sqlite"
    dest: "{{ vector_map_path }}/viewer/cities1000.sqlite"
  when: not cities_installed.stat.exists

- name: Symlink {{ doc_root }}/common/assets/map-catalog.json -> /etc/iiab/map-catalog.json
  file:
    src: /etc/iiab/map-catalog.json
    path: "{{ doc_root }}/common/assets/map-catalog.json"    # /library/www/html
    state: link

- name: Symlink {{ vector_map_path }}/test-page/assets/map-catalog.json -> /etc/iiab/map-catalog.json
  file:
    src: /etc/iiab/map-catalog.json
    path: "{{ vector_map_path }}/test-page/assets/map-catalog.json"
    state: link

- name: Symlink {{ vector_map_path }}/maplist/assets/regions.json -> /etc/iiab/regions.json
  file:
    src: /etc/iiab/regions.json
    path: "{{ vector_map_path }}/maplist/assets/regions.json"
    state: link

- name: Download the JavaScript bundle with OpenLayers (test-page-bundle.js) for test page http://box/maps/maplist
# At this point, fetches from github.com/georgejhunt/maps from test branch
  get_url:
    url: "{{ item }}"
    dest: "{{ vector_map_path }}/test-page/"
  with_items:
    - "{{ osm_repo_url }}/{{ maps_branch }}/osm-source/pages/test-page/build/test-page-bundle.js"    # https://raw.githubusercontent.com/iiab/maps / master
    - "{{ osm_repo_url }}/{{ maps_branch }}/osm-source/pages/test-page/build/index.html"

- name: Fetch the javascript bundle with openlayers for Viewer page
# At this point, fetches from github.com/iiab/maps from {{ maps_branch }} branch
  get_url:
    url: "{{ osm_repo_url }}/{{ maps_branch }}/osm-source/pages/viewer/build/{{ item }}"
    dest: "{{ vector_map_path }}/viewer/"
  with_items:
    - index.html
    - viewer-bundle.js
    - viewer-bundle.js.map

- name: Get the helper files for viewer
  get_url:
    url: "{{ osm_repo_url }}/{{ maps_branch }}/osm-source/pages/viewer/{{ item }}"
    dest: "{{ vector_map_path }}/viewer/"
  with_items:
    - mbtileinfo.php
    - popup.css
    - searchapi.php
    - tileserver.php

- name: Copy the map installer mbtiles
  get_url:
    url: "{{ map_catalog_url }}/planet_z0-z6_2019.mbtiles"
    dest: "{{ vector_map_path }}/installer/"

- name: Symlink {{ vector_map_path }}/installer/detail.mbtiles -> {{ vector_map_path }}/installer/planet_z0-z6_2019.mbtiles
  file:
    src: "{{ vector_map_path }}/installer/planet_z0-z6_2019.mbtiles"
    path: "{{ vector_map_path }}/installer/detail.mbtiles"
    state: link

- name: Symlink {{ vector_map_path }}/viewer/tiles/planet_z0-z6_2019.mbtiles -> {{ vector_map_path }}/installer/planet_z0-z6_2019.mbtiles
  file:
    src: "{{ vector_map_path }}/installer/planet_z0-z6_2019.mbtiles"
    path: "{{ vector_map_path }}/viewer/tiles/planet_z0-z6_2019.mbtiles"
    state: link

- name: Copy the map abbreviated satellite images
  get_url:
    url: "{{ map_catalog_url }}/satellite_z0-z6_v3.mbtiles"
    dest: "{{ vector_map_path }}/viewer/tiles/satellite_z0-z6_v3.mbtiles"

- name: Fetch the javascript bundle for map installer
  get_url:
    url: "{{ osm_repo_url }}/{{ maps_branch }}/osm-source/pages/installer/build/{{ item }}"
    dest: "{{ vector_map_path }}/installer/"
  with_items:
    - index.html
    - installer-bundle.js

- name: Fetch the action routines for installer
  get_url:
    url: "{{ osm_repo_url }}/{{ maps_branch }}/osm-source/pages/installer/{{ item }}"
    dest: "{{ vector_map_path }}/installer/"
  with_items:
    - map.css
    - style-osm.json
    - installer-functions.js
    - tileserver.php

# the following was changed to grab from the iiab/maps repo
- name: Copy the common assets for the general purpose map viewer
  get_url:
    url: "{{ osm_repo_url }}/{{ maps_branch }}/osm-source/pages/viewer/assets/{{ item }}"
    dest: "{{ vector_map_path }}/viewer/assets"
  with_items:
    - bboxes.geojson
    - center.png
    - countries.json
    - fonts.css
    - ol-layerswitcher.css
    - ol-contextmenu.css
    - pin_drop.png
    - sprite@2x.json
    - sprite@2x.png
    - sprite.json
    - sprite.png
    - style-cdn.json
    - style-osm.json
    - style-sat.json
    - view_list.png

- name: Symlink {{ vector_map_path }}/maplist/assets/bboxes.geojson -> {{ vector_map_path }}/viewer/assets/bboxes.geojson for Admin Console
  file:
    src: "{{ vector_map_path }}/viewer/assets/bboxes.geojson"
    path: "{{ vector_map_path }}/maplist/assets/bboxes.geojson"
    state: link
    force: True

- name: Symlink {{ vector_map_path }}/maplist/assets/countries.json -> {{ vector_map_path }}/viewer/assets/countries.json for Admin Console
  file:
    src: "{{ vector_map_path }}/viewer/assets/countries.json"
    path: "{{ vector_map_path }}/maplist/assets/countries.json"
    state: link
    force: True

- name: Copy the fonts for the general purpose map viewer
  copy:
    src: "{{ item }}"
    dest: "{{ doc_root }}/common/fonts/"
    mode: 0644
    owner: root
    group: root
  with_fileglob:
    - fonts/*

- name: Copy the redirect to the test page
  get_url:
    url: "{{ osm_repo_url }}/{{ maps_branch }}/osm-source/pages/viewer/installer-index.redirect"
    dest: "{{ vector_map_path }}/maplist/index.html"
    force: yes

- name: Get packages necessary for map installation
  package:
    state: present
    name:
      - python3-wget
      - "php{{ php_version }}-sqlite3"
      - python3-geojson
      - python3-pil

- name: Copy a scripts to download tiles
  get_url:
    url: "{{ osm_repo_url }}/{{ maps_branch }}/osm-source/pages/viewer/scripts/{{ item }}"
    dest: /usr/bin/
    mode: 0755
  with_items:
    - iiab-install-map-region
    - iiab-extend-sat.py
    - iiab-summarize.sh
    - iiab-maps-finish.py
    - iiab-make-init.py
    - iiab-update-map


# RECORD OSM Vector Maps AS INSTALLED

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

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