From 2dd145bede1bcd0878b78ae6dba5128f810190f5 Mon Sep 17 00:00:00 2001
From: Adrien Waksberg <git@waks.be>
Date: Thu, 20 Jan 2022 09:54:06 +0100
Subject: [PATCH] fix: add multiple value type in service vars

---
 templates/services.conf.j2 | 22 ++++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

diff --git a/templates/services.conf.j2 b/templates/services.conf.j2
index c2c4f68..0633c9b 100644
--- a/templates/services.conf.j2
+++ b/templates/services.conf.j2
@@ -20,9 +20,27 @@ apply Service "{{ name }}" {
 {% endif %}
 {% if service.vars is defined %}
 
-{% for var_name, value in service.vars.items() %}
-  vars.{{ var_name }} = {% if value is number %}{{ value }}{% else %}"{{ value|replace('\n', ' ') }}"{% endif %}
+{% for var, value in service.vars.items() %}
+{% if value is sameas True %}
+  vars.{{ var }} = true
+{% elif value is sameas False %}
+  vars.{{ var }} = false
+{% elif value is mapping %}
+{% for name, config in value.items() %}
+    vars.{{ var }}["{{ name }}"] = {
+{% for option, v in config.items() %}
+      {{ option }} = {% if v is number %}{{ v }}{% else %}"{{ v|replace('\n', ' ')|trim }}"{% endif %}
 
+{% endfor %}
+    }
+{% endfor %}
+{% elif value is iterable and not value is string %}
+  vars.{{ var }} = [ "{{ value|join(', "') }}" ]
+{% elif value is number or value|regex_search('^[0-9]+(s|m|h|d)$') %}
+  vars.{{ var }} = {{ value }}
+{% else %}
+  vars.{{ var }} = "{{ value|replace('\n', ' ')|trim }}"
+{% endif %}
 {% endfor %}
 {% endif %}
 }