feat: better mandatories support (centralized)

This commit is contained in:
egarette@silique.fr 2026-03-06 08:15:21 +01:00
parent 105b4fd654
commit 437664e95a
2 changed files with 19 additions and 5 deletions

View file

@ -27,7 +27,7 @@ from tiramisu.error import PropertiesOptionError
from tiramisu import MetaConfig
from rougail import Rougail
from rougail.user_data import UserData
from rougail.user_data import UserData, mandatories
from rougail.config import get_rougail_config
from rougail.utils import load_modules
from rougail.error import RougailWarning
@ -63,6 +63,10 @@ def _main(arguments, do_not_print):
print(version)
exit()
layer_datas, metaconfig, config, err_warn = load_user_data(rougailconfig)
if config and (not rougailconfig["cli.load_config"] or not rougailconfig["cli.read_write"]):
config.property.read_only()
if rougailconfig["cli.mandatory"]:
mandatories(config, err_warn["errors"])
output = get_output(rougailconfig,
metaconfig,
config,
@ -106,7 +110,10 @@ def load_cmd_user_data(rougailconfig, arguments):
for warning in user_data["warnings"]:
if isinstance(warning, dict):
for w, var in warning.items():
warn(UserWarning(f'unable to load "{var.option.impl_get_display_name(var)}", {str(w)}'))
if var:
warn(UserWarning(f'unable to load "{var.option.impl_get_display_name(var)}", {str(w)}'))
else:
warn(UserWarning(f'{str(w)}'))
else:
warn(warning)
if manage_warnings:
@ -288,8 +295,6 @@ def load_user_data(rougailconfig):
def get_output(rougailconfig, metaconfig, config, err_warn, layer_datas):
# output
if config and (not rougailconfig["cli.load_config"] or not rougailconfig["cli.read_write"]):
config.property.read_only()
output_name = rougailconfig["step.output"]
path = Path(__file__).parent.parent / ("output_" + output_name) / "__init__.py"
if not path.is_file():

View file

@ -26,7 +26,6 @@ def get_rougail_config(
options = f"""
tiramisu_cache:
redefine: true
hidden: true
default:
variable: _.cli.tiramisu_cache
@ -100,6 +99,16 @@ cli:
read_write: false # {_('Configuration in output step is in read_write mode')}
mandatory:
description: {_('test mandatories variables')}
help: |-
{_("The configuration must be valid before process output. It's better to validate the values at the beginning of the process.")}
type: boolean
default:
jinja: |-
{{{{ cli.read_write == false }}}}
description: {_('if "cli.read_write" is false')}
description_type:
description: {_('Type of variables description')}
alternative_name: cd