{%- set tplroot = tpldir.split('/')[0] %}
{%- from tplroot ~ "/map.jinja" import salt_settings with context %}
{%- from tplroot ~ "/libtofs.jinja" import files_switch with context %}

{% if salt_settings.pin_version and salt_settings.version and grains.os_family|lower == 'debian' %}
include:
  - .pin
{% endif %}

{%- if grains.kernel != 'Windows' %}

    {%- if grains.os == 'MacOS' %}
salt-master-macos:
  file.managed:
    - name: /Library/LaunchDaemons/com.saltstack.salt.master.plist
    - source: https://raw.githubusercontent.com/saltstack/salt/master/pkg/osx/scripts/com.saltstack.salt.master.plist
    - source_hash: {{ salt_settings.salt_master_macos_plist_hash }}
    - retry: {{ salt_settings.retry_options | json }}
    - require_in:
      - service: salt-master
    {%- endif %}

salt-master:
    {% if salt_settings.install_packages %}
  pkg.installed:
    - name: {{ salt_settings.salt_master }}
       {%- if salt_settings.version is defined %}
    - version: {{ salt_settings.version }}
       {%- endif %}
       {% if salt_settings.master_service_details.state != 'ignore' %}
    - require_in:
      - service: salt-master
    - watch_in:
      - service: salt-master
       {% endif %}
    {% endif %}
  file.recurse:
    - name: {{ salt_settings.config_path }}/master.d
    {%- if salt_settings.master_config_use_TOFS %}
    - template: ''
    - source: {{ files_switch(['master.d'],
                              lookup='salt-master'
                 )
              }}
    {%- else %}
    - template: jinja
    - source: salt://{{ tplroot }}/files/master.d
    {%- endif %}
    - clean: {{ salt_settings.clean_config_d_dir }}
    - exclude_pat:
      - _*
      - raas.conf
    {% if salt_settings.master_service_details.state != 'ignore' %}
  service.{{ salt_settings.master_service_details.state }}:
    - enable: {{ salt_settings.master_service_details.enabled }}
    - name: {{ salt_settings.master_service }}
    {%- if grains.os_family == 'FreeBSD' %}
    - retry: {{ salt_settings.retry_options | json }}
    {%- endif %}
    - watch:
           {%- if grains.kernel|lower == 'darwin' %}
      - file: salt-master-macos
           {%- else %}
      - file: salt-master
           {%- endif %}
      - file: remove-old-master-conf-file
    - order: last
    {% endif %}
    {% if salt_settings.master_remove_config %}
remove-default-master-conf-file:
  file.absent:
    - name: {{ salt_settings.config_path }}/master
    - watch_in:
      - service: salt-master
    {% endif %}

# clean up old _defaults.conf file if they have it around
remove-old-master-conf-file:
  file.absent:
    - name: {{ salt_settings.config_path }}/master.d/_defaults.conf

{%- else %}

salt-master-install-skip:
  test.show_notification:
    - text: |
        No salt-master state for Windows

{%- endif %}