43 lines
938 B
Python
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()
|