{% from "apt/map.jinja" import apt as apt_map with context %}
{% set apt = pillar.get('apt', {}) %}
{% set remove_preferences = apt.get('remove_preferences', apt_map.remove_preferences) %}
{% set clean_preferences_d = apt.get('clean_preferences_d', apt_map.clean_preferences_d) %}
{% set preferences_dir = apt.get('preferences_dir', apt_map.preferences_dir) %}
{% set preferences = apt.get('preferences', apt_map.preferences) %}
{% set default_url = apt.get('default_url', apt_map.default_url) %}

/etc/apt/preferences:
  file.managed:
    - mode: '0644'
    - user: root
    - group: root
  {% if remove_preferences %}
    - contents: ''
    - contents_newline: False
  {% else %}
    - replace: False
  {% endif %}

{{ preferences_dir }}:
  file.directory:
    - mode: '0755'
    - user: root
    - group: root
    - clean: {{ clean_preferences_d }}

{% for pref_file, args in preferences.items() %}
{%- set p_package = args.package if args.package is defined else '*' %}

{{ preferences_dir }}/{{ pref_file }}:
  file.managed:
    - mode: '0644'
    - user: root
    - group: root
    - contents:
      - "{{ 'Package: ' ~ p_package }}"
      - "{{ 'Pin: ' ~ args.pin }}"
      - "{{ 'Pin-Priority: ' ~ args.priority }}"
{% if 'explanation' in args %}
{% for explanation in args.explanation %}
      - "{{ 'Explanation: ' ~ explanation }}"
{% endfor %}
{% endif %}
{% endfor %}