fix: better layers support

This commit is contained in:
egarette@silique.fr 2025-11-07 13:05:28 +01:00
parent 82df953c70
commit e56815f684
3 changed files with 19 additions and 12 deletions

View file

@ -160,7 +160,7 @@ def manage_warnings(warnings):
def load_user_datas(rougailconfig): def load_user_datas(rougailconfig):
layer_datas = {} layer_datas = {}
if not rougailconfig["cli.load_config"]: if not rougailconfig["cli.load_config"]:
return None, {"errors": [], "warnings": []} return None, None, None, {"errors": [], "warnings": []}
try: try:
user_data_names = rougailconfig["step.user_data"] user_data_names = rougailconfig["step.user_data"]
except PropertiesOptionError: except PropertiesOptionError:
@ -195,7 +195,8 @@ def load_user_datas(rougailconfig):
layer_name = None layer_name = None
# data user # data user
user_datas = [] user_datas = []
layer_datas[layer_name] = {} if has_layers:
layer_datas[layer_name] = {}
for user_data_name in layer: for user_data_name in layer:
path = ( path = (
Path(__file__).parent.parent Path(__file__).parent.parent
@ -217,7 +218,8 @@ def load_user_datas(rougailconfig):
subconfig, subconfig,
rougailconfig=rougailconfig, rougailconfig=rougailconfig,
).run(): ).run():
layer_datas[layer_name].setdefault(user_data_name, []).append(user_data["source"]) if has_layers:
layer_datas[layer_name].setdefault(user_data_name, []).append(user_data["source"])
user_datas.append(user_data) user_datas.append(user_data)
if user_datas: 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) 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)
@ -226,14 +228,15 @@ def load_user_datas(rougailconfig):
err_warn[level].extend(datas) err_warn[level].extend(datas)
for layer_name, interactive_user_data in interactive_user_datas.items(): for layer_name, interactive_user_data in interactive_user_datas.items():
for layer, rougail_user_datas in interactive_user_data.items(): for layer, rougail_user_datas in interactive_user_data.items():
if has_layers and len(layers) > 1: if has_layers:
subconfig = subconfig.config("_".join(layer)) if len(layers) > 1:
subconfig.owner.set(subconfig.path()) subconfig = subconfig.config("_".join(layer))
for user_data in rougail_user_datas( subconfig.owner.set(subconfig.path())
subconfig, for user_data in rougail_user_datas(
rougailconfig=rougailconfig, subconfig,
).run(): rougailconfig=rougailconfig,
layer_datas[layer_name].setdefault(user_data_name, []).append(user_data["source"]) ).run():
layer_datas[layer_name].setdefault(user_data_name, []).append(user_data["source"])
return layer_datas, metaconfig, subconfig, err_warn return layer_datas, metaconfig, subconfig, err_warn

View file

@ -2,6 +2,10 @@
│ Variable Modified value │ │ Variable Modified value │
│ (⏳ Original default value) │ │ (⏳ Original default value) │
╰──────────────────────────────────────╯ ╰──────────────────────────────────────╯
╭─────────── Layers ────────────╮
│ environment variable │
│ the YAML file "yaml/file.yml" │
╰───────────────────────────────╯
Variables: Variables:
┗━━ 📓 a description: a yaml value ◀ loaded from the YAML file "yaml/file.yml" ┗━━ 📓 a description: a yaml value ◀ loaded from the YAML file "yaml/file.yml"
 (⏳ my env value ◀ loaded from environment variable ⏳ my env value)  (⏳ my env value ◀ loaded from environment variable ⏳ my env value)

View file

@ -1 +1 @@
["tiramisu", "tiramisu-cmdline-parser", "rougail", "rougail-cli", "rougail-structural-bitwarden", "rougail-user-data-ansible", "rougail-user-data-bitwarden", "rougail-user-data-commandline", "rougail-user-data-environment", "rougail-user-data-yaml", "rougail-output-ansible", "rougail-output-console", "rougail-output-doc", "rougail-output-json"] ["tiramisu", "tiramisu-cmdline-parser", "rougail", "rougail-cli", "rougail-structural-bitwarden", "rougail-user-data-ansible", "rougail-user-data-bitwarden", "rougail-user-data-commandline", "rougail-user-data-environment", "rougail-user-data-questionary", "rougail-user-data-yaml", "rougail-output-ansible", "rougail-output-console", "rougail-output-doc", "rougail-output-json"]