packages-formula/packages/snaps.sls

106 lines
2.8 KiB
Text
Raw Normal View History

2018-03-13 14:36:11 +00:00
# -*- coding: utf-8 -*-
# vim: ft=sls
{%- from "./map.jinja" import packages with context %}
2018-03-13 14:36:11 +00:00
# As we are 'extend'ing pkg_req_pkgs and unwanted_pkgs, we need to concatenate
# the attributes correctly (see #17)
{%- set req_packages = packages.pkgs.required.pkgs + packages.snaps.packages %}
{%- set req_states = packages.pkgs.required.states + packages.snaps.required.states %}
{%- set unwanted_packages = packages.pkgs.unwanted + packages.snaps.collides %}
{%- set wanted_snaps = packages.snaps.wanted %}
{%- set classic_snaps = packages.snaps.classic %}
{%- set unwanted_snaps = packages.snaps.unwanted %}
2018-03-13 14:36:11 +00:00
{%- if packages.snaps.packages %}
{%- if wanted_snaps or classic_snaps or unwanted_snaps %}
2018-03-13 16:35:00 +00:00
### REQ PKGS (without this, SNAPS can fail to install/uninstall)
2018-03-13 14:36:11 +00:00
include:
- .pkgs
{%- if req_states %}
{%- for dep in req_states %}
- {{ dep }}
{%- endfor %}
{%- endif %}
2018-03-13 14:36:11 +00:00
extend:
2018-03-13 14:36:11 +00:00
unwanted_pkgs:
pkg.purged:
2019-03-05 20:12:25 -03:00
- pkgs: {{ unwanted_packages | json }}
2018-03-13 14:36:11 +00:00
pkg_req_pkgs:
pkg.installed:
2019-03-05 20:12:25 -03:00
- pkgs: {{ req_packages | json }}
{%- if req_states %}
2018-03-13 14:36:11 +00:00
- require:
{%- for dep in req_states %}
2018-03-13 14:36:11 +00:00
- sls: {{ dep }}
{%- endfor %}
{%- endif %}
- retry: {{ packages.retry_options|json }}
2018-03-13 14:36:11 +00:00
{%- if packages.snaps.symlink %}
{# classic confinement requires snaps under /snap or symlink from #}
{# /snap to /var/lib/snapd/snap #}
2018-03-13 16:35:00 +00:00
packages-snap-classic-symlink:
file.symlink:
- name: /snap
- target: /var/lib/snapd/snap
- unless: test -d /snap
- require:
- pkg: pkg_req_pkgs
- pkg: unwanted_pkgs
{%- endif %}
2018-03-13 16:35:00 +00:00
{%- for snap in packages.snaps.service %}
2018-03-13 14:36:11 +00:00
packages-{{ snap }}-service:
service.running:
- name: {{ snap }}
- enable: true
- require:
- pkg: pkg_req_pkgs
- pkg: unwanted_pkgs
{%- endfor %}
2018-03-13 14:36:11 +00:00
### SNAPS to install
{%- for snap in wanted_snaps %}
2018-03-13 14:36:11 +00:00
packages-snapd-{{ snap }}-wanted:
cmd.run:
- name: snap install {{ snap }}
- unless: snap list {{ snap }}
- output_loglevel: quiet
- require:
- pkg: pkg_req_pkgs
- pkg: unwanted_pkgs
- retry: {{ packages.retry_options|json }}
{%- endfor %}
2018-03-13 14:36:11 +00:00
### SNAPS to install in classic mode
{%- for snap in classic_snaps %}
packages-snapd-{{ snap }}-classic:
cmd.run:
- name: snap install --classic {{ snap }}
- unless: snap list {{ snap }}
- output_loglevel: quiet
- require:
- pkg: pkg_req_pkgs
- pkg: unwanted_pkgs
- retry: {{ packages.retry_options|json }}
{%- endfor %}
2018-03-13 14:36:11 +00:00
### SNAPS to uninstall
{%- for snap in unwanted_snaps %}
2018-03-13 14:36:11 +00:00
packages-snapd-{{ snap }}-unwanted:
cmd.run:
- name: snap remove {{ snap }}
- onlyif: snap list {{ snap }}
- output_loglevel: quiet
- require:
- pkg: pkg_req_pkgs
- pkg: unwanted_pkgs
{%- endfor %}
2018-03-13 14:36:11 +00:00
{%- endif %}
{%- endif %}