git_pkg:
  pkg.installed:
    - name: git

{##ensure that git pillar exists##}
{%- if pillar['git'] is defined -%}

  {##set up git repos for this server##}
  {%- for repo in pillar['git'] %}

  {%- if pillar['git'][repo]['key'] is defined %}
{{ repo }}_key:
file.managed:
  - name: /root/.ssh/{{ pillar['git'][repo]['key'] }}
  - source: salt://systems/core/git/keys/{{ pillar['git'][repo]['key'] }}
  - user: root
  - group: root
  - mode: 600
  - makedirs: true
  {%- endif -%}
{{ repo }}:
  git.latest:
    - name: {{ pillar['git'][repo]['repo'] }}
    - target: {{ pillar['git'][repo]['path'] }}
    {%- if pillar['git'][repo]['branch'] is defined %}
    - branch: {{ pillar['git'][repo]['branch'] }}
    {%- endif -%}
    {%- if pillar['git'][repo]['key'] is defined %}
    - identity: /root/.ssh/{{ pillar['git'][repo]['key'] }}
    {%- endif -%}
    {%- if pillar['git'][repo]['force'] is defined %}
    - force_checkout: {{ pillar['git'][repo]['force'] }}
    - force_reset: {{ pillar['git'][repo]['force'] }}
    {%- endif -%}

    {##ensure that name is defined pillar exists##}
    {%- if pillar['git'][repo]['name'] is defined %}
{{ repo }}_name:
  git.config_set:
    - name: user.name
    - value: {{ pillar['git'][repo]['name'] }}
    - repo: {{ pillar['git'][repo]['path'] }}
    {%- endif -%}

    {##ensure that email is defined pillar exists##}
    {%- if pillar['git'][repo]['email'] is defined %}
{{ repo }}_email:
  git.config_set:
    - name: user.email
    - value: {{ pillar['git'][repo]['email'] }}
    - repo: {{ pillar['git'][repo]['path'] }}
    {%- endif -%}
  {%- endfor %}
{%- endif %}