do not crash if autocmake.yml does not contain any modules

This commit is contained in:
Radovan Bast 2016-07-18 11:44:58 +02:00
parent 003cff2dff
commit 6353a2e440

View File

@ -57,57 +57,57 @@ def fetch_modules(config, relative_path, download_directory):
total=num_sources, total=num_sources,
width=30) width=30)
i = 0 if 'modules' in config:
for t in config['modules']: i = 0
for k, v in t.items(): for t in config['modules']:
for k, v in t.items():
d = to_d(v) d = to_d(v)
for _k, _v in to_d(v).items(): for _k, _v in to_d(v).items():
cleaned_config[_k] = flat_add(cleaned_config[_k], _v) cleaned_config[_k] = flat_add(cleaned_config[_k], _v)
# fetch sources and parse them # fetch sources and parse them
if 'source' in d: if 'source' in d:
for src in to_l(d['source']): for src in to_l(d['source']):
i += 1 i += 1
# we download the file # we download the file
module_name = os.path.basename(src) module_name = os.path.basename(src)
if 'http' in src: if 'http' in src:
path = download_directory path = download_directory
name = 'autocmake_{0}'.format(module_name) name = 'autocmake_{0}'.format(module_name)
dst = os.path.join(download_directory, 'autocmake_{0}'.format(module_name)) dst = os.path.join(download_directory, 'autocmake_{0}'.format(module_name))
fetch_url(src, dst) fetch_url(src, dst)
file_name = dst file_name = dst
fetch_dst_directory = download_directory fetch_dst_directory = download_directory
else:
if os.path.exists(src):
path = os.path.dirname(src)
name = module_name
file_name = src
fetch_dst_directory = path
else: else:
sys.stderr.write("ERROR: {0} does not exist\n".format(src)) if os.path.exists(src):
sys.exit(-1) path = os.path.dirname(src)
name = module_name
file_name = src
fetch_dst_directory = path
else:
sys.stderr.write("ERROR: {0} does not exist\n".format(src))
sys.exit(-1)
# we infer config from the module documentation # we infer config from the module documentation
# dictionary d overrides the configuration in the module documentation # dictionary d overrides the configuration in the module documentation
# this allows to override interpolation inside the module # this allows to override interpolation inside the module
with open(file_name, 'r') as f: with open(file_name, 'r') as f:
parsed_config = parse_cmake_module(f.read(), d) parsed_config = parse_cmake_module(f.read(), d)
for _k2, _v2 in parsed_config.items(): for _k2, _v2 in parsed_config.items():
if _k2 not in to_d(v): if _k2 not in to_d(v):
# we add to clean_config only if the entry does not exist # we add to clean_config only if the entry does not exist
# in parent autocmake.yml already # in parent autocmake.yml already
# this allows to override # this allows to override
cleaned_config[_k2] = flat_add(cleaned_config[_k2], _v2) cleaned_config[_k2] = flat_add(cleaned_config[_k2], _v2)
modules.append(Module(path=path, name=name)) modules.append(Module(path=path, name=name))
print_progress_bar(text='- assembling modules:', print_progress_bar(text='- assembling modules:',
done=i, done=i,
total=num_sources, total=num_sources,
width=30) width=30)
print('')
print('')
return modules, cleaned_config return modules, cleaned_config