bundlewrap/libs/systemd.py
mwiegand f49928bed1 wip
2021-07-13 16:37:31 +02:00

43 lines
938 B
Python

from mako.template import Template
template = '''
% for segment, options in data.items():
% if '#' in segment:
# ${segment.split('#', 2)[1]}
% endif
[${segment.split('#')[0]}]
% for option, value in options.items():
% if isinstance(value, dict):
% for k, v in value.items():
${option}=${k}=${v}
% endfor
% elif isinstance(value, (list, set, tuple)):
% for item in sorted(value):
${option}=${item}
% endfor
% else:
${option}=${str(value)}
% endif
% endfor
% endfor
'''
order = [
'Unit',
'Timer',
'Service',
'Install',
]
def segment_order(segment):
return (
order.index(segment[0]) if segment[0] in order else float('inf'),
segment[0]
)
def generate_unitfile(data):
return Template(template).render(
data=dict(sorted(data.items(), key=segment_order)),
order=order
).lstrip()