diff --git a/src/rougail/cli/__main__.py b/src/rougail/cli/__main__.py index 0907068..ffb1590 100644 --- a/src/rougail/cli/__main__.py +++ b/src/rougail/cli/__main__.py @@ -175,6 +175,29 @@ def load_user_datas(rougailconfig): rougail = Rougail(rougailconfig) layer_name = "_".join(layers[-1]) subconfig = rougail.run(name=layer_name) + try: + read_write = set() + read_only = set() + if rougailconfig["cli.inaccessible_read_write_modes"]: + read_write = set(rougailconfig["cli.inaccessible_read_write_modes"]) + if rougailconfig["cli.inaccessible_modes"]: + read_only = set(rougailconfig["cli.inaccessible_modes"]) + read_write |= read_only + if read_write: + subconfig.property.setdefault( + frozenset(subconfig.property.default("read_write", "append") | read_write), "read_write", "append" + ) + subconfig.property.setdefault( + frozenset(subconfig.property.default("read_only", "remove") | (read_write - read_only)), "read_only", "remove" + ) + subconfig.property.read_write() + if read_only: + subconfig.property.setdefault( + frozenset(subconfig.property.default("read_only", "append") | read_only), "read_only", "append" + ) + subconfig.property.read_write() + except: + pass metaconfig = subconfig if last_layers: for layer in layers[:-1]: diff --git a/src/rougail/cli/config.py b/src/rougail/cli/config.py index ae556e2..3a26dd2 100644 --- a/src/rougail/cli/config.py +++ b/src/rougail/cli/config.py @@ -58,6 +58,38 @@ cli: hidden: true read_write: false # {_('Configuration in output step is in read_write mode')} + + inaccessible_read_write_modes: + description: {_('Modes that should not be accessible in read_write mode')} + multi: true + mandatory: false + disabled: + jinja: | + {{% if not modes_level %}} + No mode + {{% endif %}} + validators: + - type: jinja + jinja: | + {{% if _.inaccessible_read_write_modes not in modes_level %}} + not in modes_level ({{modes_level}}) + {{% endif %}} + + inaccessible_modes: + description: {_('Modes that should not be accessible')} + multi: true + mandatory: false + disabled: + jinja: | + {{% if not modes_level %}} + No mode + {{% endif %}} + validators: + - type: jinja + jinja: | + {{% if _.inaccessible_modes not in modes_level %}} + not in modes_level ({{modes_level}}) + {{% endif %}} """ return { "options": options, diff --git a/tests/rougailcli_file/mix_console.txt b/tests/rougailcli_file/mix_console.txt index e027f77..5f1a157 100644 --- a/tests/rougailcli_file/mix_console.txt +++ b/tests/rougailcli_file/mix_console.txt @@ -1 +1 @@ -"[cols=\"1a,1a\"]\n|====\n| Variable | Description \n| \n\n**my_variable** +\n`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[string]` `mandatory` | \nA description. +\n**Default**: my_value \n|====\n\n" \ No newline at end of file +"[cols=\"1a,1a\"]\n|====\n| Variable | Description \n| **my_variable** +\n`https://rougail.readthedocs.io/en/latest/variable.html#variables-types[string]` `mandatory` | A description. +\n**Default**: my_value \n|====\n\n" \ No newline at end of file