{% from "deploy/map.jinja" import deploy with context %}

include:
  - deploy.user

deploy_packages:
  pkg.installed:
    - order: 0
    - pkgs: [git]

deploy_target_directory:
  file.directory:
    - name: {{ deploy.config.deploy_directory }}
    - user: deployer
    - group: deployer
    - mode: 770
    - require:
      - user: deployer
      - group: deployer

{% for project_name, project_config in deploy.projects.items() if project_config.get('gitlab', False) %}
{% set repo_config = project_config.gitlab %}

deploy_{{ project_name }}_clone_git:
  git.latest:
    - name: {{ repo_config.url }}
    - rev: {{ repo_config.rev }}
    - user: deployer
    - force_fetch: true
    - force_reset: true  # ignore local repos changed!
    - target: {{ project_config.path }}

deploy_{{ project_name }}_clone_directory_permissions:
  file.directory:
    - name: {{ project_config.path }}
    - user: deployer
    - group: {{ project_name }}
    {% if repo_config.get('keep_chmod_from_repo', False) %}
    {% else %}
    - dir_mode: 750
    - file_mode: 640
    {% endif %}
    - recurse:
      - user
      - group
      - mode
    - require:
        - git: deploy_{{ project_name }}_clone_git
        - sls: deploy.user

{% if repo_config.get('after_clone_command', False) %}
deploy_{{ project_name }}_run_after_clone_command:
  cmd.run:
    - name: {{ repo_config.after_clone_command }}
    - cwd: {{ deploy.config.deploy_directory }}
    - require:
      - git: deploy_{{ project_name }}_clone_git
      - file: deploy_{{ project_name }}_clone_directory_permissions
{% endif %}

{% endfor%}