]> git.ipfire.org Git - thirdparty/systemd.git/blob - tools/meson-render-jinja2.py
sd-json: make static analyzers shut up
[thirdparty/systemd.git] / tools / meson-render-jinja2.py
1 #!/usr/bin/env python3
2 # SPDX-License-Identifier: LGPL-2.1-or-later
3 # pylint: disable=consider-using-with
4
5 import ast
6 import os
7 import re
8 import sys
9
10 import jinja2
11
12 def parse_config_h(filename):
13 # Parse config.h file generated by meson.
14 ans = {}
15 for line in open(filename):
16 m = re.match(r'#define\s+(\w+)\s+(.*)', line)
17 if not m:
18 continue
19 a, b = m.groups()
20 if b and b[0] in '0123456789"':
21 b = ast.literal_eval(b)
22 ans[a] = b
23 return ans
24
25 def render(filename, defines):
26 text = open(filename).read()
27 template = jinja2.Template(text,
28 trim_blocks=True,
29 lstrip_blocks=True,
30 keep_trailing_newline=True,
31 undefined=jinja2.StrictUndefined)
32 return template.render(defines)
33
34 def main():
35 defines = parse_config_h(sys.argv[1])
36 output = render(sys.argv[2], defines)
37 with open(sys.argv[3], 'w') as f:
38 f.write(output)
39 info = os.stat(sys.argv[2])
40 os.chmod(sys.argv[3], info.st_mode)
41
42 if __name__ == '__main__':
43 main()