###  mysql/macos/install.sls
# -*- coding: utf-8 -*-
# vim: ft=yaml
{%- from salt.file.dirname(tpldir) ~ "/map.jinja" import mysql with context %}

  {%- set dl = mysql.macos.dl %}

mysql-macos-extract-dirs:
  file.directory:
    - name: {{ dl.tmpdir }}
    - makedirs: True

  {%- for product, data in mysql.macos.products.items() if "enabled" in data and data.enabled %}
      {%- set archivefile = data.url.split('/')[-1] %}
      {%- set archiveformat = archivefile.split('.')[-1] %}
      {%- set archivename = archivefile|replace('.dmg', '')|replace('.tar.gz', '')|replace('.zip', '') %}

mysql-macos-download-{{ product }}-archive:
  pkg.installed:
    - name: curl
  cmd.run:
    - name: curl {{ dl.opts }} -o {{ dl.tmpdir }}/{{ archivefile }} {{ data.url }}
    - unless: test -f {{ dl.tmpdir }}/{{ archivefile }}
      {%- if grains['saltversioninfo'] >= [2017, 7, 0] %}
    - retry:
        attempts: {{ dl.retries }}
        interval: {{ dl.interval }}
        until: True
        splay: 10
      {%- endif %}
    - require:
      - mysql-macos-extract-dirs

    {%- if data.sum %}
mysql-macos-check-{{ product }}-archive-hash:
   module.run:
     - name: file.check_hash
     - path: {{ dl.tmpdir }}/{{ archivefile }}
     - file_hash: {{ data.sum }}
     - require:
       - cmd: mysql-macos-download-{{ product }}-archive
     - require_in:
       - mysql-macos-{{ product }}-install
    {%- endif %}

mysql-macos-{{ product }}-install:
    {%- if archiveformat in ("dmg",) %}

  macpackage.installed:
    - name: "{{ dl.tmpdir }}/{{ archivefile }}"
    - dmg: True
    - app: {{ 'True' if "isapp" not in data else data.isapp }}
    - force: True
    - allow_untrusted: True
    - onchanges:
      - mysql-macos-download-{{ product }}-archive

    {%- elif archiveformat in ("gz", "zip",) %}

  archive.extracted:
    - source: file://{{ dl.tmpdir }}{{ archivefile }}
    - name: {{ dl.prefix }}/{{ archivename }}
    - trim_output: True
    - source_hash: {{ data.sum }}
    - onchanges:
      - mysql-macos-download-{{ product }}-archive
    {%- endif %}

      {%- if "path" in data and data.path and "app" in data and data.app %}

mysql-macos-append-{{ product }}-path-to-bash-profile:
  file.append:
    - name: {{ mysql.macos.userhomes }}/{{ mysql.macos.user }}/.bash_profile
    - text: 'export PATH=$PATH:{{ data.path }}/bin'
    - onlyif: test -d {{ data.path }}/bin

mysql-macos-{{ product }}-desktop-shortcut-add:
  file.managed:
    - name: /tmp/mac_shortcut.sh
    - source: salt://mysql/files/mac_shortcut.sh
    - mode: 755
    - template: jinja
    - context:
        user: {{ mysql.macos.user }}
        home: {{ mysql.macos.userhomes }}
        app: {{ data.app }}
        dir: {{ '/Applications' if "isapp" in data and data.isapp else dl.prefix ~ '/' ~ archivename ~ '/bin' }}
        suffix: {{ '.app' if "isapp" in data and data.isapp else '' }}
  cmd.run:
    - name: /tmp/mac_shortcut.sh add
    - runas: {{ mysql.macos.user }}
    - require:
      - file: mysql-macos-{{ product }}-desktop-shortcut-add

    {%- endif %}
  {%- endfor %}