feat: cli loads .rougailcli.yml file
This commit is contained in:
parent
3f2920f37c
commit
8c924a7cba
2 changed files with 28 additions and 5 deletions
|
|
@ -24,9 +24,13 @@ from pathlib import Path
|
||||||
from rougail import Rougail
|
from rougail import Rougail
|
||||||
from rougail.config import get_rougail_config
|
from rougail.config import get_rougail_config
|
||||||
from rougail.utils import load_modules
|
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:
|
try:
|
||||||
from rougail.user_data_environment import RougailUserDataEnvironment
|
from rougail.user_data_environment import RougailUserDataEnvironment
|
||||||
from rougail.user_datas import UserDatas
|
|
||||||
except ImportError:
|
except ImportError:
|
||||||
RougailUserDataEnvironment = None
|
RougailUserDataEnvironment = None
|
||||||
|
|
||||||
|
|
@ -42,11 +46,21 @@ def _main():
|
||||||
origin_prop = cmd_config.property.default('read_write', 'append')
|
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.setdefault(frozenset(origin_prop | {"not_for_commandline"}), 'read_write', 'append')
|
||||||
cmd_config.property.read_write()
|
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:
|
if RougailUserDataEnvironment:
|
||||||
fake_rougail_config = {'step.user_data': 'environment',
|
fake_rougail_config = {'step.user_data': 'environment',
|
||||||
'environment.default_environment_name': 'ROUGAILCLI',
|
'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"]:
|
if user_data["errors"]:
|
||||||
raise Exception(user_data["errors"][0])
|
raise Exception(user_data["errors"][0])
|
||||||
if user_data["warnings"]:
|
if user_data["warnings"]:
|
||||||
|
|
@ -66,7 +80,6 @@ def _main():
|
||||||
user_data_names = rougailconfig["step.user_data"]
|
user_data_names = rougailconfig["step.user_data"]
|
||||||
except PropertiesOptionError:
|
except PropertiesOptionError:
|
||||||
user_data_names = []
|
user_data_names = []
|
||||||
output_name = rougailconfig["step.output"]
|
|
||||||
# structural
|
# structural
|
||||||
rougail = Rougail(rougailconfig)
|
rougail = Rougail(rougailconfig)
|
||||||
config = rougail.run()
|
config = rougail.run()
|
||||||
|
|
@ -101,7 +114,6 @@ def _main():
|
||||||
err_warn = {"errors": [], "warnings": []}
|
err_warn = {"errors": [], "warnings": []}
|
||||||
if user_data_names:
|
if user_data_names:
|
||||||
config.property.read_write()
|
config.property.read_write()
|
||||||
user_datas = []
|
|
||||||
for user_data_name in user_data_names:
|
for user_data_name in user_data_names:
|
||||||
path = (
|
path = (
|
||||||
Path(__file__).parent.parent
|
Path(__file__).parent.parent
|
||||||
|
|
@ -118,6 +130,7 @@ def _main():
|
||||||
err_warn["warnings"].extend(ret["warnings"])
|
err_warn["warnings"].extend(ret["warnings"])
|
||||||
# output
|
# output
|
||||||
config.property.read_only()
|
config.property.read_only()
|
||||||
|
output_name = rougailconfig["step.output"]
|
||||||
path = Path(__file__).parent.parent / ("output_" + output_name) / "__init__.py"
|
path = Path(__file__).parent.parent / ("output_" + output_name) / "__init__.py"
|
||||||
if not path.is_file():
|
if not path.is_file():
|
||||||
raise Exception(
|
raise Exception(
|
||||||
|
|
@ -136,7 +149,7 @@ def _main():
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
global print_traceback
|
global print_traceback
|
||||||
print_traceback = False
|
print_traceback = True
|
||||||
try:
|
try:
|
||||||
_main()
|
_main()
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,16 @@ def get_rougail_config(
|
||||||
) -> dict:
|
) -> dict:
|
||||||
options = f"""
|
options = f"""
|
||||||
cli:
|
cli:
|
||||||
|
description: {_('Command line option')}
|
||||||
|
|
||||||
|
config_file:
|
||||||
|
description: {_('display debug informations')}
|
||||||
|
type: unix_filename
|
||||||
|
commandline: false
|
||||||
|
params:
|
||||||
|
allow_relative: true
|
||||||
|
default: .rougailcli.yml
|
||||||
|
|
||||||
debug:
|
debug:
|
||||||
description: {_('display debug informations')}
|
description: {_('display debug informations')}
|
||||||
negative_description: {_('do not display debut informations')}
|
negative_description: {_('do not display debut informations')}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue