packages-formula/packages/gems.sls
2020-10-21 14:21:49 -03:00

54 lines
1.4 KiB
Text

# -*- coding: utf-8 -*-
# vim: ft=sls
{#- Get the `tplroot` from `tpldir` #}
{%- set tplroot = tpldir.split('/')[0] %}
{%- from tplroot ~ "/map.jinja" import packages with context %}
{%- set req_states = packages.gems.required.states %}
{%- set req_pkgs = packages.gems.required.pkgs %}
{%- set wanted_gems = packages.gems.wanted %}
{%- set unwanted_gems = packages.gems.unwanted %}
{%- if wanted_gems or unwanted_gems %}
{%- if req_states %}
include:
{%- for dep in req_states %}
- {{ dep }}
{%- endfor %}
{%- endif %}
### REQ PKGS (without these, some of the WANTED GEMS will fail to install)
gem_req_pkgs:
pkg.installed:
- pkgs: {{ req_pkgs | json }}
- retry: {{ packages.retry_options|json }}
### GEMS to install
# (requires the ruby/rubygem deb/rpm installed, either by the system or listed in
# the required packages
{%- for gm in wanted_gems %}
{{ gm }}:
gem.installed:
- require:
- pkg: gem_req_pkgs
{%- if req_states %}
{%- for dep in req_states %}
- sls: {{ dep }}
{%- endfor %}
{%- endif %}
- retry: {{ packages.retry_options|json }}
{#- Not specific to Arch but needed for the newest versions of Ruby #}
{%- if grains.os_family == 'Arch' %}
- rdoc: True
- ri: True
{%- endif %}
{%- endfor %}
{%- for ugm in unwanted_gems %}
{{ ugm }}:
gem.removed:
- require:
- pkg: gem_req_pkgs
{%- endfor %}
{%- endif %}