mirror of https://gerrit.osmocom.org/osmo-dev
fill_config: resolve relative include paths recursively
This commit is contained in:
parent
ede8016f4b
commit
e02e0aee7a
|
@ -97,6 +97,32 @@ def check_stale(src_path, target_path):
|
||||||
print('Stale: %r is newer than %r' % (src_path, target_path))
|
print('Stale: %r is newer than %r' % (src_path, target_path))
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
|
def insert_includes(tmpl, tmpl_dir, tmpl_src):
|
||||||
|
for m in command_re.finditer(tmpl):
|
||||||
|
cmd = m.group(1)
|
||||||
|
arg = m.group(2)
|
||||||
|
if cmd == 'include':
|
||||||
|
include_path = os.path.join(tmpl_dir, arg)
|
||||||
|
if not os.path.isfile(include_path):
|
||||||
|
print('Error: included file does not exist: %r in %r' % (include_path, tmpl_src))
|
||||||
|
exit(1)
|
||||||
|
try:
|
||||||
|
incl = open(include_path).read()
|
||||||
|
except:
|
||||||
|
print('Cannot read %r for %r' % (include_path, tmpl_src))
|
||||||
|
raise
|
||||||
|
if args.check_stale:
|
||||||
|
check_stale(include_path, dst)
|
||||||
|
|
||||||
|
# recurse, to follow the paths that the included bits come from
|
||||||
|
incl = insert_includes(incl, os.path.dirname(include_path), include_path)
|
||||||
|
|
||||||
|
tmpl = tmpl.replace('${%s(%s)}' % (cmd, arg), incl)
|
||||||
|
else:
|
||||||
|
print('Error: unknown command: %r in %r' % (cmd, tmpl_src))
|
||||||
|
exit(1)
|
||||||
|
return tmpl
|
||||||
|
|
||||||
for tmpl_name in sorted(os.listdir(tmpl_dir)):
|
for tmpl_name in sorted(os.listdir(tmpl_dir)):
|
||||||
|
|
||||||
# omit "hidden" files
|
# omit "hidden" files
|
||||||
|
@ -124,25 +150,8 @@ for tmpl_name in sorted(os.listdir(tmpl_dir)):
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
used_vars = set()
|
used_vars = set()
|
||||||
for m in command_re.finditer(result):
|
|
||||||
cmd = m.group(1)
|
result = insert_includes(result, tmpl_dir, tmpl_src)
|
||||||
arg = m.group(2)
|
|
||||||
if cmd == 'include':
|
|
||||||
include_path = os.path.join(tmpl_dir, arg)
|
|
||||||
if not os.path.isfile(include_path):
|
|
||||||
print('Error: included file does not exist: %r in %r' % (include_path, tmpl_src))
|
|
||||||
exit(1)
|
|
||||||
try:
|
|
||||||
incl = open(include_path).read()
|
|
||||||
except:
|
|
||||||
print('Cannot read %r for %r' % (include_path, tmpl_src))
|
|
||||||
raise
|
|
||||||
if args.check_stale:
|
|
||||||
check_stale(include_path, dst)
|
|
||||||
result = result.replace('${%s(%s)}' % (cmd, arg), incl)
|
|
||||||
else:
|
|
||||||
print('Error: unknown command: %r in %r' % (cmd, tmpl_src))
|
|
||||||
exit(1)
|
|
||||||
|
|
||||||
for m in replace_re.finditer(result):
|
for m in replace_re.finditer(result):
|
||||||
name = m.group(1)
|
name = m.group(1)
|
||||||
|
|
Loading…
Reference in New Issue