Skip to content

Commit 6fb18a3

Browse files
committed
Merge pull request #254 from eosrei/configparser-missing-option
utils: Provide error message for missing build preset options
2 parents 46a1435 + 6af7a0e commit 6fb18a3

File tree

1 file changed

+26
-7
lines changed

1 file changed

+26
-7
lines changed

utils/SwiftBuildSupport.py

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -129,12 +129,24 @@ def _load_preset_files_impl(preset_file_names, substitutions={}):
129129
def _get_preset_options_impl(config, substitutions, preset_name):
130130
section_name = _PRESET_PREFIX + preset_name
131131
if section_name not in config.sections():
132-
return (None, None)
132+
return (None, None, None)
133133

134134
build_script_opts = []
135135
build_script_impl_opts = []
136+
missing_opts = []
136137
dash_dash_seen = False
137-
for o, a in config.items(section_name):
138+
139+
for o in config.options(section_name):
140+
try:
141+
a = config.get(section_name, o)
142+
except ConfigParser.InterpolationMissingOptionError, e:
143+
# e.reference contains the correctly formatted option
144+
missing_opts.append(e.reference)
145+
continue
146+
147+
if not a:
148+
a = ""
149+
138150
if o in substitutions:
139151
continue
140152

@@ -143,10 +155,13 @@ def _get_preset_options_impl(config, substitutions, preset_name):
143155
# Split on newlines and filter out empty lines.
144156
mixins = filter(None, [m.strip() for m in a.splitlines()])
145157
for mixin in mixins:
146-
(base_build_script_opts, base_build_script_impl_opts) = \
158+
(base_build_script_opts, \
159+
base_build_script_impl_opts, \
160+
base_missing_opts) = \
147161
_get_preset_options_impl(config, substitutions, mixin)
148162
build_script_opts += base_build_script_opts
149163
build_script_impl_opts += base_build_script_impl_opts
164+
missing_opts += base_missing_opts
150165
elif o == "dash-dash":
151166
dash_dash_seen = True
152167
elif a == "":
@@ -159,17 +174,22 @@ def _get_preset_options_impl(config, substitutions, preset_name):
159174
build_script_opts.append(opt)
160175
else:
161176
build_script_impl_opts.append(opt)
162-
return (build_script_opts, build_script_impl_opts)
177+
178+
return (build_script_opts, build_script_impl_opts, missing_opts)
163179

164180

165181
def get_preset_options(substitutions, preset_file_names, preset_name):
166182
config = _load_preset_files_impl(preset_file_names, substitutions)
167183

168-
(build_script_opts, build_script_impl_opts) = \
184+
(build_script_opts, build_script_impl_opts, missing_opts) = \
169185
_get_preset_options_impl(config, substitutions, preset_name)
170-
if build_script_opts is None:
186+
if not build_script_opts:
171187
print_with_argv0("preset '" + preset_name + "' not found")
172188
sys.exit(1)
189+
if missing_opts:
190+
print_with_argv0("missing option(s) for preset '" + preset_name + \
191+
"': " + ", ".join(missing_opts))
192+
sys.exit(1)
173193

174194
return build_script_opts + [ "--" ] + build_script_impl_opts
175195

@@ -194,4 +214,3 @@ def __enter__(self):
194214

195215
def __exit__(self, type, value, traceback):
196216
os.chdir(self.old_cwd)
197-

0 commit comments

Comments
 (0)