Merge "Cosmetic changes for alerts"
diff --git a/README.rst b/README.rst
index 2765990..45139c4 100644
--- a/README.rst
+++ b/README.rst
@@ -389,6 +389,20 @@
           /tmp/test.txt:
             contents_grains: motd
 
+Ensure presence of file to be serialized through one of the serializer modules
+(see: https://docs.saltstack.com/en/latest/ref/serializers/all/index.html):
+
+.. code-block:: yaml
+
+    linux:
+      system:
+        file:
+          /tmp/test.json:
+            serialize: json
+            contents:
+              foo: 1
+              bar: 'bar'
+
 Kernel
 ~~~~~~
 
diff --git a/linux/system/file.sls b/linux/system/file.sls
index 0de42fe..ffc1d76 100644
--- a/linux/system/file.sls
+++ b/linux/system/file.sls
@@ -4,12 +4,16 @@
 {%- for file_name, file in system.file.items() %}
 
 linux_file_{{ file_name }}:
+{%- if file.serialize is defined %}
+  file.serialize:
+    - formatter: {{ file.serialize }}
+  {%- if file.contents is defined  %}
+    - dataset: {{ file.contents|yaml }}
+  {%- elif file.contents_pillar is defined %}
+    - dataset_pillar: {{ file.contents_pillar }}
+  {%- endif %}
+{%- else %}
   file.managed:
-    {%- if file.name is defined %}
-    - name: {{ file.name }}
-    {%- else %}
-    - name: {{ file_name }}
-    {%- endif %}
     {%- if file.source is defined %}
     - source: {{ file.source }}
     {%- if file.hash is defined %}
@@ -24,6 +28,12 @@
     {%- elif file.contents_grains is defined %}
     - contents_grains: {{ file.contents_grains }}
     {%- endif %}
+{%- endif %}
+    {%- if file.name is defined %}
+    - name: {{ file.name }}
+    {%- else %}
+    - name: {{ file_name }}
+    {%- endif %}
     - makedirs: {{ file.get('makedirs', 'True') }}
     - user: {{ file.get('user', 'root') }}
     - group: {{ file.get('group', 'root') }}
diff --git a/linux/system/repo.sls b/linux/system/repo.sls
index b734498..8b93ecb 100644
--- a/linux/system/repo.sls
+++ b/linux/system/repo.sls
@@ -33,7 +33,7 @@
 
 purge_sources_list_d_repos:
    file.directory:
-   - name: /etc/apt/sources.list.d/           
+   - name: /etc/apt/sources.list.d/
    - clean: True
 
 {%- endif %}
@@ -77,29 +77,40 @@
 
 {%- endif %}
 
-{%- if repo.get('default', False) %}
-
-{%- do default_repos.update({name: repo}) %}
-
-{%- if repo.get('key') %}
+{%- if repo.get('key') %} {# 2 #}
 
 linux_repo_{{ name }}_key:
-  cmd.wait:
-    - name: "echo -e '{{ repo.key|replace('\n', '\\n') }}' | apt-key add -"
-    - watch:
+  cmd.run:
+    - name: |
+            echo "{{ repo.key | indent(12) }}" | apt-key add -
+    - unless: |
+            apt-key finger --with-colons | grep -qF $(echo "{{ repo.key| indent(12) }}" | gpg --with-fingerprint --with-colons | grep -E '^fpr')
+    - require_in:
+    {%- if repo.get('default', False) %}
       - file: default_repo_list
+    {% else %}
+      - pkgrepo: linux_repo_{{ name }}
+    {% endif %}
 
 {%- elif repo.key_url|default(False) %}
 
 linux_repo_{{ name }}_key:
-  cmd.wait:
+  cmd.run:
     - name: "curl -sL {{ repo.key_url }} | apt-key add -"
-    - watch:
+    - unless: "apt-key finger --with-colons | grep -qF $(curl -sL {{ repo.key_url }} | gpg --with-fingerprint --with-colons | grep -E '^fpr')"
+    - require_in:
+    {%- if repo.get('default', False) %}
       - file: default_repo_list
+    {% else %}
+      - pkgrepo: linux_repo_{{ name }}
+    {% endif %}
 
-{%- endif %}
+{%- endif %} {# 2 #}
 
-{%- else %}
+{%- if repo.get('default', False) %}   {# 1 #}
+  {%- do default_repos.update({name: repo}) %}  {# for 'default' repos #}
+
+{%- else %} {# for all others repos #}
 
 {%- if repo.get('enabled', True) %}
 
@@ -137,26 +148,6 @@
   {%- endif %}
   {%- endif %}
 
-{%- if repo.get('key') %}
-
-linux_repo_{{ name }}_key:
-  cmd.run:
-    - name: "echo -e '{{ repo.key|replace('\n', '\\n') }}' | apt-key add -"
-    - unless: "apt-key finger --with-colons | grep -qF $(echo -e '{{ repo.key|replace('\n', '\\n') }}' | gpg --with-fingerprint --with-colons | grep -E '^fpr')"
-    - require_in:
-      - pkgrepo: linux_repo_{{ name }}
-
-{%- elif repo.key_url|default(False) %}
-
-linux_repo_{{ name }}_key:
-  cmd.run:
-    - name: "curl -sL {{ repo.key_url }} | apt-key add -"
-    - unless: "apt-key finger --with-colons | grep -qF $(curl -sL {{ repo.key_url }} | gpg --with-fingerprint --with-colons | grep -E '^fpr')"
-    - require_in:
-      - pkgrepo: linux_repo_{{ name }}
-
-{%- endif %}
-
 {%- else %}
 
 linux_repo_{{ name }}_absent:
@@ -177,7 +168,7 @@
 
 {%- endif %}
 
-{%- endif %}
+{%- endif %} {# 1 #}
 
 {#- os_family Debian #}
 {%- endif %}