Добавил возможность указания аргументов коммандной строки.

Могут быть добавлены только те аргументы, которые есть в настройках
This commit is contained in:
Rustam Zaitov 2013-09-29 19:26:12 +04:00
parent 9af4a76159
commit 32af9273bc
2 changed files with 32 additions and 6 deletions

View File

@ -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']

View File

@ -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):