Add new attribute "include" to "file"

This attribute have 3 values:
- "no": it's a normal file
- "name": the name is included in another template so it is generated before other templates
- "content": the content is included in another template so it is generated before the other templates and is not installed on the server

fixes #2
This commit is contained in:
2021-02-21 10:34:01 +01:00
parent 710711b253
commit 0be7a72d28
101 changed files with 631 additions and 377 deletions

View File

@ -0,0 +1,21 @@
<?xml version='1.0' encoding='UTF-8'?>
<rougail version="0.9">
<services>
<service name="test">
<file>/etc/file</file>
<file engine="jinja2">/etc/file2</file>
<file include="name">/etc/dir/incfile</file>
</service>
</services>
<variables>
<family name="general">
<variable name="mode_conteneur_actif" type="string" description="Description">
<value>non</value>
</variable>
</family>
</variables>
</rougail>
<!-- vim: ts=4 sw=4 expandtab
-->

View File

@ -0,0 +1 @@
{"rougail.general.mode_conteneur_actif": "non", "services.test.files.file.engine": "creole", "services.test.files.file.group": "root", "services.test.files.file.include": "no", "services.test.files.file.mode": "0644", "services.test.files.file.name": "/etc/file", "services.test.files.file.owner": "root", "services.test.files.file.source": "file", "services.test.files.file.activate": true, "services.test.files.file2.engine": "jinja2", "services.test.files.file2.group": "root", "services.test.files.file2.include": "no", "services.test.files.file2.mode": "0644", "services.test.files.file2.name": "/etc/file2", "services.test.files.file2.owner": "root", "services.test.files.file2.source": "file2", "services.test.files.file2.activate": true, "services.test.files.incfile.engine": "creole", "services.test.files.incfile.group": "root", "services.test.files.incfile.include": "name", "services.test.files.incfile.mode": "0644", "services.test.files.incfile.name": "/etc/dir/incfile", "services.test.files.incfile.owner": "root", "services.test.files.incfile.source": "incfile", "services.test.files.incfile.activate": true}

View File

@ -0,0 +1 @@
non

View File

@ -0,0 +1 @@
include /etc/dir/incfile

View File

@ -0,0 +1 @@
non

View File

@ -0,0 +1,6 @@
C /etc/file 0644 root root - /usr/local/lib/etc/file
z /etc/file - - - - -
C /etc/file2 0644 root root - /usr/local/lib/etc/file2
z /etc/file2 - - - - -
C /etc/dir/incfile 0644 root root - /usr/local/lib/etc/dir/incfile
z /etc/dir/incfile - - - - -

View File

@ -0,0 +1,47 @@
from importlib.machinery import SourceFileLoader
from importlib.util import spec_from_loader, module_from_spec
loader = SourceFileLoader('func', 'tests/dictionaries/../eosfunc/test.py')
spec = spec_from_loader(loader.name, loader)
func = module_from_spec(spec)
loader.exec_module(func)
for key, value in dict(locals()).items():
if key != ['SourceFileLoader', 'func']:
setattr(func, key, value)
try:
from tiramisu3 import *
except:
from tiramisu import *
option_3 = StrOption(name="mode_conteneur_actif", doc="Description", default="non", properties=frozenset({"mandatory", "normal"}))
option_2 = OptionDescription(name="general", doc="general", children=[option_3], properties=frozenset({"normal"}))
option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2])
option_8 = StrOption(name="engine", doc="engine", default="creole")
option_9 = StrOption(name="group", doc="group", default="root")
option_10 = StrOption(name="include", doc="include", default="no")
option_11 = StrOption(name="mode", doc="mode", default="0644")
option_12 = FilenameOption(name="name", doc="name", default="/etc/file")
option_13 = StrOption(name="owner", doc="owner", default="root")
option_14 = StrOption(name="source", doc="source", default="file")
option_15 = BoolOption(name="activate", doc="activate", default=True)
option_7 = OptionDescription(name="file", doc="file", children=[option_8, option_9, option_10, option_11, option_12, option_13, option_14, option_15])
option_17 = StrOption(name="engine", doc="engine", default="jinja2")
option_18 = StrOption(name="group", doc="group", default="root")
option_19 = StrOption(name="include", doc="include", default="no")
option_20 = StrOption(name="mode", doc="mode", default="0644")
option_21 = FilenameOption(name="name", doc="name", default="/etc/file2")
option_22 = StrOption(name="owner", doc="owner", default="root")
option_23 = StrOption(name="source", doc="source", default="file2")
option_24 = BoolOption(name="activate", doc="activate", default=True)
option_16 = OptionDescription(name="file2", doc="file2", children=[option_17, option_18, option_19, option_20, option_21, option_22, option_23, option_24])
option_26 = StrOption(name="engine", doc="engine", default="creole")
option_27 = StrOption(name="group", doc="group", default="root")
option_28 = StrOption(name="include", doc="include", default="name")
option_29 = StrOption(name="mode", doc="mode", default="0644")
option_30 = FilenameOption(name="name", doc="name", default="/etc/dir/incfile")
option_31 = StrOption(name="owner", doc="owner", default="root")
option_32 = StrOption(name="source", doc="source", default="incfile")
option_33 = BoolOption(name="activate", doc="activate", default=True)
option_25 = OptionDescription(name="incfile", doc="incfile", children=[option_26, option_27, option_28, option_29, option_30, option_31, option_32, option_33])
option_6 = OptionDescription(name="files", doc="files", children=[option_7, option_16, option_25])
option_5 = OptionDescription(name="test", doc="test", children=[option_6])
option_4 = OptionDescription(name="services", doc="services", children=[option_5], properties=frozenset({"hidden"}))
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1, option_4])

View File

@ -0,0 +1,7 @@
%import os
%set %%confdir = '/etc/dir/'
%set %%files = %%os.listdir(%%rougail_destination_dir + %%confdir)
%%files.sort()%slurp
%for %%file in %%files
include %%{confdir}%%file
%end for

View File

@ -0,0 +1 @@
{% include "/etc/dir/incfile" %}

View File

@ -0,0 +1 @@
%%mode_conteneur_actif