diff --git a/scripts/buld.py b/scripts/buld.py index 87a6dda..723a4cc 100644 --- a/scripts/buld.py +++ b/scripts/buld.py @@ -2,12 +2,22 @@ import os import settings import instruments +import argparse cmd_args = {'version' : '1.2.3', 'some_field' : 'some_value', 'action' : 'build'} +keys = instruments.GetConfigKeys(settings.build_ready_configs) -instruments.CompileConfigs(settings.build_ready_configs, cmd_args) +parser = argparse.ArgumentParser() +for key in keys: + arg = "--{0}".format(key) + parser.add_argument(arg) -for bc in settings.build_ready_configs: +args = parser.parse_args() +print vars(args) + +build_ready_configs = instruments.GetUnionConfigs(settings.build_ready_configs, cmd_args) + +for bc in build_ready_configs: print bc['name'] sln_path = bc['sln_path'] diff --git a/scripts/instruments.py b/scripts/instruments.py index a9795dd..1fe2247 100644 --- a/scripts/instruments.py +++ b/scripts/instruments.py @@ -86,19 +86,35 @@ def BuildSolution(mdtool, abs_path_to_sln, config): ret_code = call(build_cmd_text, shell=True) print('finished with return code: {0}'.format(ret_code)) -def CompileConfigs(configs_lst, cmd_args): +def GetUnionConfigs(configs_lst, cmd_args=None): + union_configs = [] for c_dict in configs_lst: ancestors = GetAncestorsFromRootTo(c_dict) - ancestors.append(cmd_args) + if cmd_args is not None: + ancestors.append(cmd_args) union_config = {} for a in ancestors: union_config.update(a) - c_dict.clear() - c_dict.update(union_config) + union_configs.append(union_config) + + return union_configs + +def GetConfigKeys(configs_lst): + union_configs = GetUnionConfigs(configs_lst) + + keys = []; + for config in union_configs: + for key in config.keys(): + keys.append(key) + + # remove duplicates + keys = list(set(keys)) + + return keys def GetAncestorsFromRootTo(config):