feat: cli loads .rougailcli.yml file

This commit is contained in:
egarette@silique.fr 2025-03-31 09:30:29 +02:00
parent 3f2920f37c
commit 8c924a7cba
2 changed files with 28 additions and 5 deletions

View file

@ -24,9 +24,13 @@ from pathlib import Path
from rougail import Rougail
from rougail.config import get_rougail_config
from rougail.utils import load_modules
from rougail.user_datas import UserDatas
try:
from rougail.user_data_yaml import RougailUserDataYaml
except ImportError:
RougailUserDataYaml = None
try:
from rougail.user_data_environment import RougailUserDataEnvironment
from rougail.user_datas import UserDatas
except ImportError:
RougailUserDataEnvironment = None
@ -42,11 +46,21 @@ def _main():
origin_prop = cmd_config.property.default('read_write', 'append')
cmd_config.property.setdefault(frozenset(origin_prop | {"not_for_commandline"}), 'read_write', 'append')
cmd_config.property.read_write()
fake_rougail_config = {'step.user_data': [],}
fake_user_datas = []
if RougailUserDataYaml and Path(rougailconfig["cli.config_file"]).is_file():
fake_rougail_config = {'step.user_data': 'yaml',
'yaml.filename': [rougailconfig["cli.config_file"]],
'yaml.file_with_secrets': 'all',
}
fake_user_datas.extend(RougailUserDataYaml(cmd_config, rougailconfig=fake_rougail_config).run())
if RougailUserDataEnvironment:
fake_rougail_config = {'step.user_data': 'environment',
'environment.default_environment_name': 'ROUGAILCLI',
}
user_data = UserDatas(cmd_config).user_datas(RougailUserDataEnvironment(cmd_config, rougailconfig=fake_rougail_config).run())
fake_user_datas.extend(RougailUserDataEnvironment(cmd_config, rougailconfig=fake_rougail_config).run())
if fake_user_datas:
user_data = UserDatas(cmd_config).user_datas(fake_user_datas)
if user_data["errors"]:
raise Exception(user_data["errors"][0])
if user_data["warnings"]:
@ -66,7 +80,6 @@ def _main():
user_data_names = rougailconfig["step.user_data"]
except PropertiesOptionError:
user_data_names = []
output_name = rougailconfig["step.output"]
# structural
rougail = Rougail(rougailconfig)
config = rougail.run()
@ -101,7 +114,6 @@ def _main():
err_warn = {"errors": [], "warnings": []}
if user_data_names:
config.property.read_write()
user_datas = []
for user_data_name in user_data_names:
path = (
Path(__file__).parent.parent
@ -118,6 +130,7 @@ def _main():
err_warn["warnings"].extend(ret["warnings"])
# output
config.property.read_only()
output_name = rougailconfig["step.output"]
path = Path(__file__).parent.parent / ("output_" + output_name) / "__init__.py"
if not path.is_file():
raise Exception(
@ -136,7 +149,7 @@ def _main():
def main():
global print_traceback
print_traceback = False
print_traceback = True
try:
_main()
except Exception as err:

View file

@ -25,6 +25,16 @@ def get_rougail_config(
) -> dict:
options = f"""
cli:
description: {_('Command line option')}
config_file:
description: {_('display debug informations')}
type: unix_filename
commandline: false
params:
allow_relative: true
default: .rougailcli.yml
debug:
description: {_('display debug informations')}
negative_description: {_('do not display debut informations')}