feat: choice if invalid value or unknown variable in user data is a fatal error or not
This commit is contained in:
parent
ff58fc056a
commit
ca636fe7a6
2 changed files with 33 additions and 15 deletions
|
|
@ -164,7 +164,8 @@ def load_user_datas(rougailconfig):
|
|||
user_data_names = rougailconfig["step.user_data"]
|
||||
except PropertiesOptionError:
|
||||
user_data_names = []
|
||||
if rougailconfig["cli.layers"]:
|
||||
has_layers = rougailconfig["cli.layers"]
|
||||
if has_layers:
|
||||
layers = [[ud] for ud in user_data_names]
|
||||
last_layers = len(layers) - 1
|
||||
else:
|
||||
|
|
@ -172,8 +173,8 @@ def load_user_datas(rougailconfig):
|
|||
last_layers = 0
|
||||
rougail = Rougail(rougailconfig)
|
||||
layer_name = "_".join(layers[-1])
|
||||
config = rougail.run(name=layer_name)
|
||||
metaconfig = config
|
||||
subconfig = rougail.run(name=layer_name)
|
||||
metaconfig = subconfig
|
||||
if last_layers:
|
||||
for layer in layers[:-1]:
|
||||
layer_name = "_".join(layer)
|
||||
|
|
@ -181,11 +182,13 @@ def load_user_datas(rougailconfig):
|
|||
metaconfig.owner.set(metaconfig.path())
|
||||
subconfig = metaconfig
|
||||
err_warn = {"errors": [], "warnings": []}
|
||||
invalid_user_datas_error = rougailconfig["cli.invalid_user_datas_error"]
|
||||
unknown_user_datas_error = rougailconfig["cli.unknown_user_datas_error"]
|
||||
interactive_user_datas = {}
|
||||
for idx, layer in enumerate(layers):
|
||||
if idx:
|
||||
subconfig = subconfig.config("_".join(layer))
|
||||
config.owner.set(subconfig.path())
|
||||
subconfig.property.read_write()
|
||||
subconfig.owner.set(subconfig.path())
|
||||
# data user
|
||||
user_datas = []
|
||||
for user_data_name in layer:
|
||||
|
|
@ -199,22 +202,33 @@ def load_user_datas(rougailconfig):
|
|||
_('cannot find "user_data" module "{0}"').format(user_data_name)
|
||||
)
|
||||
module = load_modules("rougail.user_data_" + user_data_name, str(path))
|
||||
rougail_user_datas = module.RougailUserData
|
||||
if hasattr(rougail_user_datas, 'interactive_user_datas') and rougail_user_datas.interactive_user_datas:
|
||||
interactive_user_datas[user_data_name] = rougail_user_datas
|
||||
continue
|
||||
elif interactive_user_datas:
|
||||
raise Exception(_(f'interactive user datas "{0}" is loader before uninteractive user datas "{1}"').format(list(interactive_user_datas), user_data_name))
|
||||
user_datas.extend(
|
||||
module.RougailUserData(
|
||||
rougail_user_datas(
|
||||
subconfig,
|
||||
rougailconfig=rougailconfig,
|
||||
).run()
|
||||
)
|
||||
if user_datas:
|
||||
new_err_warn = UserDatas(subconfig).user_datas(user_datas)
|
||||
for level, datas in new_err_warn.items():
|
||||
if datas:
|
||||
err_warn[level].updates(datas)
|
||||
subconfig = metaconfig
|
||||
for idx, layer in enumerate(layers):
|
||||
if idx:
|
||||
if user_datas:
|
||||
new_err_warn = UserDatas(subconfig).user_datas(user_datas, invalid_user_datas_error=invalid_user_datas_error, unknown_user_datas_error=unknown_user_datas_error)
|
||||
for level, datas in new_err_warn.items():
|
||||
if datas:
|
||||
err_warn[level].updates(datas)
|
||||
for layer, rougail_user_datas in interactive_user_datas.items():
|
||||
if has_layers and len(layers) > 1:
|
||||
subconfig = subconfig.config("_".join(layer))
|
||||
return metaconfig, config, err_warn
|
||||
subconfig.owner.set(subconfig.path())
|
||||
rougail_user_datas(
|
||||
subconfig,
|
||||
rougailconfig=rougailconfig,
|
||||
).run()
|
||||
|
||||
return metaconfig, subconfig, err_warn
|
||||
|
||||
|
||||
def get_output(rougailconfig, metaconfig, config, err_warn):
|
||||
|
|
|
|||
|
|
@ -41,6 +41,10 @@ cli:
|
|||
|
||||
versions: false # {_('Displays Rougail version and all its components')}
|
||||
|
||||
invalid_user_datas_error: false # {_("Invalid value in user datas is not allowed")}
|
||||
|
||||
unknown_user_datas_error: false # {_("Unknown variable in user datas is not allowed")}
|
||||
|
||||
layers:
|
||||
description: {_('Open each user datas in separate layers')}
|
||||
default: false
|
||||
|
|
|
|||
Loading…
Reference in a new issue