# -*- coding: utf-8 -*-
# vim: ft=sls

{#- Get the `tplroot` from `tpldir` #}
{%- set tplroot = tpldir.split('/')[0] %}
{%- set sls_config_file = tplroot ~ '.config.file' %}
{%- from tplroot ~ "/map.jinja" import sudoers with context %}

include:
  - sudoers

{{ sudoers.includedir }}:
  file.directory:
    - user: root
    - group: {{ sudoers.group }}
    - mode: 750
    - clean: {{ sudoers.purge_includedir }}

{% set included_files = sudoers.included_files %}
{% for included_file, spec in included_files.items() -%}
    {%- if '/' not in included_file %}
        {%- set included_file = sudoers.includedir ~ '/' ~ included_file %}
    {%- endif %}

sudoers include {{ included_file }}:
  file.managed:
    - name: {{ included_file }}
    - user: root
    - group: {{ sudoers.group }}
    - mode: 440
    - makedirs: True
    - template: jinja
    - source: salt://sudoers/files/sudoers
    - check_cmd: {{ sudoers.execprefix }}/visudo -c -f
    - context:
        included: True
        sudoers: {{ spec|json }}
    {% if sudoers.manage_main_config %}
    - require:
      - file: {{ sudoers.configpath }}/sudoers
    - require_in:
      - file: {{ sudoers.includedir }}

    {% elif sudoers.append_included_files_to_endof_main_config %}

sudoers append {{ included_file }}:
  file.append:
    - name: {{ sudoers.configpath }}/sudoers
    - text: '#include {{ included_file }}'
    - require:
      - file: sudoers include {{ included_file }}
    {% endif %}

{% endfor %}