summaryrefslogtreecommitdiffstats
path: root/src/bootstrap/configure.py
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xsrc/bootstrap/configure.py28
1 files changed, 23 insertions, 5 deletions
diff --git a/src/bootstrap/configure.py b/src/bootstrap/configure.py
index 0af329e70..ab3d08292 100755
--- a/src/bootstrap/configure.py
+++ b/src/bootstrap/configure.py
@@ -379,8 +379,14 @@ cur_section = None
sections[None] = []
section_order = [None]
targets = {}
+top_level_keys = []
for line in open(rust_dir + '/config.toml.example').read().split("\n"):
+ if cur_section == None:
+ if line.count('=') == 1:
+ top_level_key = line.split('=')[0]
+ top_level_key = top_level_key.strip(' #')
+ top_level_keys.append(top_level_key)
if line.startswith('['):
cur_section = line[1:-1]
if cur_section.startswith('target'):
@@ -436,6 +442,8 @@ def to_toml(value):
return value
else:
return "'" + value + "'"
+ elif isinstance(value, dict):
+ return "{" + ", ".join(map(lambda a: "{} = {}".format(to_toml(a[0]), to_toml(a[1])), value.items())) + "}"
else:
raise RuntimeError('no toml')
@@ -459,12 +467,22 @@ def configure_section(lines, config):
raise RuntimeError("failed to find config line for {}".format(key))
-for section_key in config:
- section_config = config[section_key]
- if section_key not in sections:
- raise RuntimeError("config key {} not in sections".format(section_key))
+def configure_top_level_key(lines, top_level_key, value):
+ for i, line in enumerate(lines):
+ if line.startswith('#' + top_level_key + ' = ') or line.startswith(top_level_key + ' = '):
+ lines[i] = "{} = {}".format(top_level_key, value)
+ return
- if section_key == 'target':
+ raise RuntimeError("failed to find config line for {}".format(top_level_key))
+
+
+for section_key, section_config in config.items():
+ if section_key not in sections and section_key not in top_level_keys:
+ raise RuntimeError("config key {} not in sections or top_level_keys".format(section_key))
+ if section_key in top_level_keys:
+ configure_top_level_key(sections[None], section_key, section_config)
+
+ elif section_key == 'target':
for target in section_config:
configure_section(targets[target], section_config[target])
else: