feat: document output
This commit is contained in:
parent
07a8478444
commit
0c9ae4a01f
4 changed files with 121 additions and 49 deletions
22
README.fr.md
Normal file
22
README.fr.md
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
---
|
||||
gitea: none
|
||||
include_toc: true
|
||||
---
|
||||
[🇬🇧 (EN)](README.md) - [🇫🇷 (FR)](README.fr.md)
|
||||
|
||||
## Configuration de rougail-console
|
||||
|
||||
> **🛈 Informations**
|
||||
>
|
||||
> **Chemin** : console\
|
||||
> *`désactivé`*\
|
||||
> **Désactivé** : if console is not set in "[Sélection pour sortie](#step.output)"
|
||||
|
||||
| Variable | Description | Valeur par défaut | Type | Validateur |
|
||||
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------|---------------------------------------------------------------------------------------------------|--------------------------|
|
||||
| **<a id="console.show_secrets" name="console.show_secrets">console.show_secrets</a>**<br/>**Ligne de commande** : <br/>• --console.show_secrets<br/>• --console.no-show_secrets<br/>**Variable d'environnement** : ROUGAILCLI_CONSOLE.SHOW_SECRETS | Voir les secrets plutôt que de les obscurcir. | false | [`boolean`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `obligatoire` | |
|
||||
| **<a id="console.mandatory" name="console.mandatory">console.mandatory</a>**<br/>**Ligne de commande** : <br/>• --console.mandatory<br/>• --console.no-mandatory<br/>**Variable d'environnement** : ROUGAILCLI_CONSOLE.MANDATORY | Test les variables obligatoires avant de les afficher dans la console. | do not test if "cli.read_write" is true | [`boolean`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `obligatoire` | |
|
||||
| **<a id="console.key_is_description" name="console.key_is_description">console.key_is_description</a>**<br/>**Ligne de commande** : <br/>• --console.key_is_description<br/>• --console.no-key_is_description<br/>**Variable d'environnement** : ROUGAILCLI_CONSOLE.KEY_IS_DESCRIPTION | Dans l'arborescence la clé est la description de la famille ou de la variable au lieux de son nom<br/>#<br/># undocumented_modes:<br/># description: Variables with those modes are not documented<br/># multi: true<br/># mandatory: false<br/># disabled:<br/># jinja: |<br/># {% if not modes_level %}<br/># there is no mode<br/># {% endif %}<br/># description: disabled when there is no mode available<br/># validators:<br/># - jinja: |<br/># {% if _.undocumented_modes not in modes_level %}<br/># this mode is not available<br/># {% endif %}<br/># description: verify if disable modes already exists. | true | [`boolean`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `obligatoire` | |
|
||||
| **<a id="console.max_width" name="console.max_width">console.max_width</a>**<br/>**Ligne de commande** : --console.max_width<br/>**Variable d'environnement** : ROUGAILCLI_CONSOLE.MAX_WIDTH | Maximum number of characters per line.<br/>Null means unlimited. | | [`integer`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) | The minimum value is 50. |
|
||||
|
||||
|
||||
22
README.md
22
README.md
|
|
@ -1,2 +1,22 @@
|
|||
# rougail-output-console
|
||||
---
|
||||
gitea: none
|
||||
include_toc: true
|
||||
---
|
||||
[🇬🇧 (EN)](README.md) - [🇫🇷 (FR)](README.fr.md)
|
||||
|
||||
## Configuration for rougail-console
|
||||
|
||||
> **🛈 Informations**
|
||||
>
|
||||
> **Path**: console\
|
||||
> *`disabled`*\
|
||||
> **Disabled**: if console is not set in "[Select for output](#step.output)"
|
||||
|
||||
| Variable | Description | Default value | Type | Validator |
|
||||
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------|-------------------------------------------------------------------------------------------------|--------------------------|
|
||||
| **<a id="console.show_secrets" name="console.show_secrets">console.show_secrets</a>**<br/>**Command line**: <br/>• --console.show_secrets<br/>• --console.no-show_secrets<br/>**Environment variable**: ROUGAILCLI_CONSOLE.SHOW_SECRETS | Show secrets instead of obscuring them. | false | [`boolean`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `mandatory` | |
|
||||
| **<a id="console.mandatory" name="console.mandatory">console.mandatory</a>**<br/>**Command line**: <br/>• --console.mandatory<br/>• --console.no-mandatory<br/>**Environment variable**: ROUGAILCLI_CONSOLE.MANDATORY | Test mandatories variables before display in console. | do not test if "cli.read_write" is true | [`boolean`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `mandatory` | |
|
||||
| **<a id="console.key_is_description" name="console.key_is_description">console.key_is_description</a>**<br/>**Command line**: <br/>• --console.key_is_description<br/>• --console.no-key_is_description<br/>**Environment variable**: ROUGAILCLI_CONSOLE.KEY_IS_DESCRIPTION | In tree the key is the family or variable description inside of it's name<br/>#<br/># undocumented_modes:<br/># description: Variables with those modes are not documented<br/># multi: true<br/># mandatory: false<br/># disabled:<br/># jinja: |<br/># {% if not modes_level %}<br/># there is no mode<br/># {% endif %}<br/># description: disabled when there is no mode available<br/># validators:<br/># - jinja: |<br/># {% if _.undocumented_modes not in modes_level %}<br/># this mode is not available<br/># {% endif %}<br/># description: verify if disable modes already exists. | true | [`boolean`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `mandatory` | |
|
||||
| **<a id="console.max_width" name="console.max_width">console.max_width</a>**<br/>**Command line**: --console.max_width<br/>**Environment variable**: ROUGAILCLI_CONSOLE.MAX_WIDTH | Maximum number of characters per line.<br/>Null means unlimited. | | [`integer`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) | The minimum value is 50. |
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,8 @@ class RougailOutputConsole:
|
|||
variable_undocumented_color = "bright_blue"
|
||||
variable_undocumented_and_modified_color = "red1"
|
||||
value_unmodified_color = "gold1"
|
||||
value_default_color = "green"
|
||||
value_modified_color = "green"
|
||||
value_default_color = None
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
|
|
@ -62,6 +63,7 @@ class RougailOutputConsole:
|
|||
self.config_owner_is_path = config_owner_is_path
|
||||
self.is_mandatory = self.rougailconfig["console.mandatory"]
|
||||
self.show_secrets = self.rougailconfig["console.show_secrets"]
|
||||
self.max_width = self.rougailconfig["console.max_width"]
|
||||
self.key_is_description = self.rougailconfig["console.key_is_description"]
|
||||
try:
|
||||
self.undocumented_modes = set(self.rougailconfig["console.undocumented_modes"])
|
||||
|
|
@ -82,7 +84,7 @@ class RougailOutputConsole:
|
|||
if user_data_warnings is None:
|
||||
user_data_warnings = []
|
||||
self.user_data_warnings = user_data_warnings
|
||||
self.console = Console(force_terminal=True)
|
||||
self.console = Console(force_terminal=True, width=self.max_width)
|
||||
self.out = []
|
||||
self.root = self.get_root()
|
||||
|
||||
|
|
@ -113,7 +115,7 @@ class RougailOutputConsole:
|
|||
description = child.path(uncalculated=True)
|
||||
if child.isdynamic() and "{{ identifier }}" in description:
|
||||
description = description.replace(
|
||||
"{{ identifier }}", child.identifiers()[-1]
|
||||
"{{ identifier }}", str(child.identifiers()[-1])
|
||||
)
|
||||
|
||||
if child.isoptiondescription():
|
||||
|
|
@ -162,7 +164,7 @@ class RougailOutputConsole:
|
|||
self.root,
|
||||
)
|
||||
self.config.information.set("path_in_description", old_path_in_description)
|
||||
if self.output.tree.children:
|
||||
if self.output.tree and self.output.tree.children:
|
||||
self.header()
|
||||
self.end()
|
||||
return True
|
||||
|
|
@ -232,9 +234,9 @@ class RougailOutputConsole:
|
|||
if self.value_unmodified_enable:
|
||||
header_value = f'[{self.value_unmodified_color}]{_("Default value")}[/{self.value_unmodified_color}]\n'
|
||||
if self.value_modified_enable:
|
||||
header_value += _("Modified value") + "\n"
|
||||
header_value += f'[{self.value_modified_color}]{_("Modified value")}[/{self.value_modified_color}]\n'
|
||||
if self.value_default_enable:
|
||||
header_value += f'([{self.value_default_color}]:hourglass_flowing_sand: {_("Original default value")}[/{self.value_default_color}])\n'
|
||||
header_value += f'(:hourglass_flowing_sand: {_("Original default value")})\n'
|
||||
caption = Table.grid(padding=1, collapse_padding=True)
|
||||
caption.pad_edge = False
|
||||
caption.add_row(caption_line[:-1], header_value[:-1])
|
||||
|
|
@ -330,34 +332,43 @@ class OutputFamily:
|
|||
is_leader: bool = False,
|
||||
no_icon: bool = False,
|
||||
) -> None:
|
||||
if parent is None:
|
||||
tree = Tree
|
||||
else:
|
||||
tree = parent.add
|
||||
if is_leader:
|
||||
self.tree = tree(
|
||||
":notebook: " + _("{0}:").format(family),
|
||||
guide_style="bold bright_blue",
|
||||
)
|
||||
elif no_icon:
|
||||
self.tree = tree(
|
||||
f"{family}",
|
||||
guide_style="bold bright_blue",
|
||||
)
|
||||
else:
|
||||
self.tree = tree(
|
||||
f":open_file_folder: {family}",
|
||||
guide_style="bold bright_blue",
|
||||
)
|
||||
self.tree = None
|
||||
self.root = root
|
||||
self.parent = parent
|
||||
self.family = family
|
||||
self.is_leader = is_leader
|
||||
self.no_icon = no_icon
|
||||
self._yaml = _yaml
|
||||
self.key_is_description = key_is_description
|
||||
self.undocumented_modes = undocumented_modes
|
||||
|
||||
def get_tree(self):
|
||||
if self.tree is None:
|
||||
if self.parent is None:
|
||||
tree = Tree
|
||||
else:
|
||||
tree = self.parent.add
|
||||
if self.is_leader:
|
||||
self.tree = tree(
|
||||
":notebook: " + _("{0}:").format(self.family),
|
||||
guide_style="bold bright_blue",
|
||||
)
|
||||
elif self.no_icon:
|
||||
self.tree = tree(
|
||||
self.family,
|
||||
guide_style="bold bright_blue",
|
||||
)
|
||||
else:
|
||||
self.tree = tree(
|
||||
f":open_file_folder: {self.family}",
|
||||
guide_style="bold bright_blue",
|
||||
)
|
||||
return self.tree
|
||||
|
||||
def add_family(
|
||||
self,
|
||||
option,
|
||||
) -> None:
|
||||
) -> 'OutputFamily':
|
||||
properties = option.property.get()
|
||||
if "hidden" in properties:
|
||||
self.root.variable_hidden_enable = True
|
||||
|
|
@ -382,7 +393,7 @@ class OutputFamily:
|
|||
}
|
||||
]
|
||||
),
|
||||
self.tree,
|
||||
self.get_tree(),
|
||||
self.root,
|
||||
self._yaml,
|
||||
self.key_is_description,
|
||||
|
|
@ -394,7 +405,6 @@ class OutputFamily:
|
|||
):
|
||||
# value is undefined but not for leader variable
|
||||
properties = option.property.get()
|
||||
color = None
|
||||
variable_color = None
|
||||
undocumented = self.undocumented_modes & properties
|
||||
hidden = False
|
||||
|
|
@ -426,7 +436,7 @@ class OutputFamily:
|
|||
values.append(
|
||||
{
|
||||
"value": value,
|
||||
"color": color,
|
||||
"color": self.root.value_modified_color,
|
||||
"loaded_from": loaded_from,
|
||||
}
|
||||
)
|
||||
|
|
@ -494,6 +504,13 @@ class OutputFamily:
|
|||
else:
|
||||
self.root.value_default_enable = True
|
||||
color = self.root.value_default_color
|
||||
follower_index = option.index()
|
||||
if follower_index is not None:
|
||||
loaded_from = option.information.get(
|
||||
f"loaded_from_{follower_index}", None
|
||||
)
|
||||
else:
|
||||
loaded_from = option.information.get("loaded_from", None)
|
||||
values.append(
|
||||
{
|
||||
"value": None,
|
||||
|
|
@ -519,14 +536,14 @@ class OutputFamily:
|
|||
option,
|
||||
)
|
||||
if isinstance(value, list):
|
||||
subtree = self.tree.add(
|
||||
subtree = self.get_tree().add(
|
||||
":notebook: " + _("{0}:").format(key),
|
||||
guide_style="bold bright_blue",
|
||||
)
|
||||
for val in value:
|
||||
subtree.add(str(val))
|
||||
else:
|
||||
self.tree.add(":notebook: " + _("{0}: {1}").format(key, value))
|
||||
self.get_tree().add(":notebook: " + _("{0}: {1}").format(key, value))
|
||||
|
||||
def get_subconfig_with_default_value(self, suboption):
|
||||
default_owner = suboption.owner.default()
|
||||
|
|
|
|||
|
|
@ -29,10 +29,14 @@ def get_rougail_config(
|
|||
console:
|
||||
description: {_('Configuration for rougail-console')}
|
||||
disabled:
|
||||
jinja: |
|
||||
jinja: |-
|
||||
{{% if step.output is propertyerror or step.output != 'console' %}}
|
||||
disabled
|
||||
true
|
||||
{{% else %}}
|
||||
false
|
||||
{{% endif %}}
|
||||
return_type: boolean
|
||||
description: {_('if console is not set in "step.output"')}
|
||||
|
||||
show_secrets: false # {_('Show secrets instead of obscuring them')}
|
||||
|
||||
|
|
@ -46,25 +50,34 @@ console:
|
|||
{{% else %}}
|
||||
true
|
||||
{{% endif %}}
|
||||
description: {_('do not test if "cli.read_write" is true')}
|
||||
|
||||
key_is_description: true # {_("In tree the key is the family or variable description inside of it's name")}
|
||||
#
|
||||
# undocumented_modes:
|
||||
# description: {_('Variables with those modes are not documented')}
|
||||
# multi: true
|
||||
# mandatory: false
|
||||
# disabled:
|
||||
# jinja: |
|
||||
# {{% if not modes_level %}}
|
||||
# there is no mode
|
||||
# {{% endif %}}
|
||||
# description: {_('disabled when there is no mode available')}
|
||||
# validators:
|
||||
# - jinja: |
|
||||
# {{% if _.undocumented_modes not in modes_level %}}
|
||||
# this mode is not available
|
||||
# {{% endif %}}
|
||||
# description: {_('verify if disable modes already exists')}
|
||||
|
||||
undocumented_modes:
|
||||
description: {_('Variables with those modes are not documented')}
|
||||
multi: true
|
||||
max_width:
|
||||
description: {_("Maximum number of characters per line")}
|
||||
help: {_('null means unlimited')}
|
||||
type: integer
|
||||
mandatory: false
|
||||
disabled:
|
||||
jinja: |
|
||||
{{% if not modes_level %}}
|
||||
there is no mode
|
||||
{{% endif %}}
|
||||
description: {_('disabled when there is no mode available')}
|
||||
validators:
|
||||
- jinja: |
|
||||
{{% if _.undocumented_modes not in modes_level %}}
|
||||
this mode is not available
|
||||
{{% endif %}}
|
||||
description: {_('verify if disable modes already exists')}
|
||||
params:
|
||||
min_integer: 50
|
||||
"""
|
||||
return {
|
||||
"name": "console",
|
||||
|
|
|
|||
Loading…
Reference in a new issue