Compare commits

..

No commits in common. "fa2297ec881dd1c5275aa44a65be7a04dd85d951" and "efcdc496ec769a5c4ace04cf43a474cf05874f5a" have entirely different histories.

24 changed files with 66 additions and 1175 deletions

View file

@ -27,7 +27,7 @@ Why another configuration manager?
Using Rougail tansforms end user consumer defined consistency rules into highly consistent business objects.
It's a configuration language designed to simplify and unify the way you define,
validate and generate configuration data.
validate and generate configuration datas.
In other word, making it easier to manage complex configurations across multiple environments.
@ -78,13 +78,13 @@ User data
user data
User data, as opposed to structured data, are data that only concern the assignment of values
User datas, as opposed to structured data, are datas that only concern the assignment of values
and not the consistency of the variables between them.
The variable's values are also called **user values**.
The consistency field is outside of the user data scope.
The consistency is handled in the :term:`structured data <structured data>`\ 's scope.
The consistency is handled in the :term:`structured datas <structured data>`\ 's scope.
Here a some user data examples:
@ -97,13 +97,9 @@ Here a some user data examples:
Output
~~~~~~~
.. glossary::
Structured and user data form a coherent configuration useful for different purposes.
output
Structured and user data form a coherent configuration useful for different purposes.
Output is here to define what kind of data we want.
Output is here to define what kind of data we want.
Here are some output examples:
@ -227,8 +223,6 @@ But other concepts are included in the lifecycle:
- Documentation
- Specialization
.. _variable_mutability:
Variable mutability
---------------------

View file

@ -40,7 +40,7 @@ Rougail
:titlesonly:
:caption: What is it all about
abstract
concepts
vac
.. toctree::
@ -59,12 +59,6 @@ Rougail
user_data/index
.. toctree::
:titlesonly:
:caption: Output
output/index
.. toctree::
:titlesonly:
:caption: The library and the tools

View file

@ -68,7 +68,7 @@ But instead of coding in the end user developer way, the opterator will prefer u
.. image:: ../images/QuestionaryChoice.png
The Rougail CLI can output a rather complete view of the dataet:
The Rougail CLI can output a rather complete view of the dataset:
.. image:: ../images/UserDataOutput.png
@ -76,7 +76,7 @@ The Rougail CLI can output a rather complete view of the dataet:
:titlesonly:
:caption: Use library
user_data
user_datas
output
parse
tags

View file

@ -1,7 +1,7 @@
Display the result
==================
After construct a configuration, loads user data, you can choose this configuration in different output format.
After construct a configuration, loads user datas, you can choose this configuration in different output format.
First of create, let's create a structural file like this:

View file

@ -1,11 +1,11 @@
Load user data
Load user datas
===============
User data are values setup by user for configuration variables.
User datas are values setup by user for configuration variables.
There is differents types of user data for differents sources types.
There is differents types of user datas for differents sources types.
We can cumulate user data loader.
We can cumulate user datas loader.
For this section, we will use :file:`dict/00-base.yml` a structure file:
@ -81,8 +81,8 @@ Here is the script which is load user data from the YAML file:
rougail = Rougail()
config = rougail.run()
user_data = RougailUserDataYaml(config).run()
rougail.user_data(user_data)
user_datas = RougailUserDataYaml(config).run()
rougail.user_datas(user_datas)
print(config.value.get())
Let's execute `script.py`:
@ -114,10 +114,10 @@ This is why the `yaml.file_with_secrets` parameter allows you to define whether
rougail = Rougail()
config = rougail.run()
user_data = RougailUserDataYaml(
user_datas = RougailUserDataYaml(
config,
).run()
rougail.user_data(user_data)
rougail.user_datas(user_datas)
print(config.value.get())
Let's execute `script.py`:
@ -155,8 +155,8 @@ Here is the script:
rougail = Rougail()
config = rougail.run()
user_data = RougailUserDataEnvironment(config).run()
rougail.user_data(user_data)
user_datas = RougailUserDataEnvironment(config).run()
rougail.user_datas(user_datas)
print(config.value.get())
Let's execute `script.py`:
@ -181,8 +181,8 @@ We can redefine the prefix with `environment.default_environment_name` (prefix i
rougail = Rougail()
config = rougail.run()
user_data = RougailUserDataEnvironment(config).run()
rougail.user_data(user_data)
user_datas = RougailUserDataEnvironment(config).run()
rougail.user_datas(user_datas)
print(config.value.get())
Let's execute `script.py`:
@ -206,8 +206,8 @@ If you define a `main_namespace` or `extra_namespaces`, the `environment.default
rougail = Rougail()
config = rougail.run()
user_data = RougailUserDataEnvironment(config).run()
rougail.user_data(user_data)
user_datas = RougailUserDataEnvironment(config).run()
rougail.user_datas(user_datas)
print(config.value.get())
Let's execute `script.py`:
@ -233,8 +233,8 @@ This is why the `environment.with_secrets` parameter allows you to reject secret
rougail = Rougail()
config = rougail.run()
user_data = RougailUserDataEnvironment(config).run()
rougail.user_data(user_data)
user_datas = RougailUserDataEnvironment(config).run()
rougail.user_datas(user_datas)
print(config.value.get())
Let's execute `script.py`:
@ -261,10 +261,10 @@ Value can be define directly with command line arguments:
rougail = Rougail()
config = rougail.run()
user_data = RougailUserDataCommandline(
user_datas = RougailUserDataCommandline(
config,
).run()
rougail.user_data(user_data)
rougail.user_datas(user_datas)
print(config.value.get())
Let's execute `script.py` to display help:
@ -299,10 +299,10 @@ Boolean variable has a special behavour. To set False you need to add --no-VARIA
.. ansible,bitwarden,questionary
Combine user data
Combine user datas
------------------
You can combine user data, for example if you want to load data from environment and/or command line argument:
You can combine user datas, for example if you want to load datas from environment and/or command line argument:
.. code-block:: python
:caption: the :file:`script.py` file content
@ -317,14 +317,14 @@ You can combine user data, for example if you want to load data from environment
rougail = Rougail()
config = rougail.run()
user_data = []
user_data.extend(RougailUserDataEnvironment(
user_datas = []
user_datas.extend(RougailUserDataEnvironment(
config,
).run())
user_data.extend(RougailUserDataCommandline(
user_datas.extend(RougailUserDataCommandline(
config,
).run())
rougail.user_data(user_data)
rougail.user_datas(user_datas)
print(config.value.get())
Let's execute `script.py` with environment variable and commandline arguments:
@ -344,7 +344,7 @@ If the value of a variable is define with an environment variable and commandlin
Manage errors and warnings
--------------------------
Recreate a script with environnement variable support which is display the return of user_data function:
Recreate a script with environnement variable support which is display the return of user_datas function:
.. code-block:: python
:caption: the :file:`script.py` file content
@ -359,10 +359,10 @@ Recreate a script with environnement variable support which is display the retur
rougail = Rougail()
config = rougail.run()
user_data = RougailUserDataEnvironment(
user_datas = RougailUserDataEnvironment(
config,
).run()
print(rougail.user_data(user_data))
print(rougail.user_datas(user_datas))
Try to load the value an unknown variable:

View file

@ -1,230 +0,0 @@
Generate Ansible inventory
==========================
.. note::
| **Path**: ansible
| `*disabled*`
| **Disabled**: when the variable "select for output" (step.output) is accessible and hasn't the value "ansible".
.. list-table::
* - Variable
- Description
* - **ansible.output**
`choice <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Command line**:
--ansible.output
**Environment variable**: ROUGAILCLI_ANSIBLE.OUTPUT
- Output type.
**Choices**:
- inventory **← (default)**
- doc
* - **ansible.host_namespace**
`string <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Command line**:
--ansible.host_namespace
**Environment variable**: ROUGAILCLI_ANSIBLE.HOST_NAMESPACE
- Namespace with host values.
**Default**: hosts
Doc configuration
-----------------
.. note::
| **Path**: ansible.doc
| `*disabled*`
| **Disabled**: when the variable "Output type" (ansible.output) hasn't the value "doc".
.. list-table::
* - Variable
- Description
* - **ansible.doc.project_name**
`string <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Command line**:
--ansible.doc.project_name
**Environment variable**: ROUGAILCLI_ANSIBLE.DOC.PROJECT_NAME
- Ansible project name.
* - **ansible.doc.author**
`string <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Command line**:
--ansible.doc.author
**Environment variable**: ROUGAILCLI_ANSIBLE.DOC.AUTHOR
- Ansible author name.
* - **ansible.doc.output_format**
`choice <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Command line**:
--ansible.doc.output_format
**Environment variable**: ROUGAILCLI_ANSIBLE.DOC.OUTPUT_FORMAT
- The output format of the generated documentation.
**Choices**:
- console **← (default)**
- asciidoc
- html
- github
- gitlab
- restructuredtext
- json
* - **ansible.doc.collection_type**
`choice <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Command line**:
--ansible.doc.collection_type
**Environment variable**: ROUGAILCLI_ANSIBLE.DOC.COLLECTION_TYPE
- Collection contents.
**Choices**:
- auto **← (default)**
- playbooks
- roles
Playbooks informations
~~~~~~~~~~~~~~~~~~~~~~
.. note::
| This family contains lists of variable blocks.
| **Path**: ansible.doc.playbooks
| `*disabled*`
| **Disabled**: if the content is a role.
.. list-table::
* - Variable
- Description
* - **ansible.doc.playbooks.name**
`string <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `multiple` `unique`
**Command line**:
--ansible.doc.playbooks.name
**Environment variable**: ROUGAILCLI_ANSIBLE.DOC.PLAYBOOKS.NAME
- Playbook name.
Playbooks are placed in the playbooks/ directory. By default, the description of the "type" is used as the playbook name in the generated example. It is possible to customize this description here.
* - **ansible.doc.playbooks.description**
`string <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Command line**:
--ansible.doc.playbooks.description
**Environment variable**: ROUGAILCLI_ANSIBLE.DOC.PLAYBOOKS.DESCRIPTION
- Playbook description.
Inventory configuration
-----------------------
.. note::
| **Path**: ansible.inventory
| `*disabled*`
| **Disabled**: when the variable "Output type" (ansible.output) hasn't the value "inventory".
.. list-table::
* - Variable
- Description
* - **ansible.inventory.no_namespace_in_vars**
`boolean <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Command line**:
- --ansible.inventory.no_namespace_in_vars
- --ansible.inventory.no-no_namespace_in_vars
**Environment variable**: ROUGAILCLI_ANSIBLE.INVENTORY.NO_NAMESPACE_IN_VARS
- Remove namespace name in host vars.
**Default**: false
* - **ansible.inventory.export_warnings**
`boolean <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Command line**:
- --ansible.inventory.export_warnings
- --ansible.inventory.no-export_warnings
**Environment variable**: ROUGAILCLI_ANSIBLE.INVENTORY.EXPORT_WARNINGS
- Displays warnings inside Ansible exportation datas.
**Default**: true

View file

@ -1,87 +0,0 @@
Display variables and values
============================
.. note::
| Find all the variables and their values in your configuration (structural and user data). Additional informations are available, such as the default value, the location where the value is loaded, etc.
| **Path**: display
| `*disabled*`
| **Disabled**: if display is not set in "select for output" (step.output).
.. list-table::
* - Variable
- Description
* - **display.output_format**
`choice <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Command line**:
--display.output_format
**Environment variable**: ROUGAILCLI_DISPLAY.OUTPUT_FORMAT
- The output format for displaying variables.
**Choices**:
- console **← (default)**
- github
- gitlab
* - **display.show_secrets**
`boolean <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Command line**:
- --display.show_secrets
- --display.no-show_secrets
**Environment variable**: ROUGAILCLI_DISPLAY.SHOW_SECRETS
- Show secrets instead of obscuring them.
**Default**: false
Specific configuration for console output
-----------------------------------------
.. note::
| **Path**: display.console
| `*disabled*`
| **Disabled**: when the variable "The output format for displaying variables" (display.output_format) hasn't the value "console".
.. list-table::
* - Variable
- Description
* - **display.console.max_width**
`integer <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__
**Command line**:
--display.console.max_width
**Environment variable**: ROUGAILCLI_DISPLAY.CONSOLE.MAX_WIDTH
- Maximum number of characters per line.
Null means unlimited.
**Validator**: the minimum value is 50

View file

@ -1,381 +0,0 @@
Generate documentation from structural files
============================================
.. note::
| The structural files contain all the information related to the variables. This output generates the documentation for all or some of these variables.
| **Path**: doc
| `*disabled*`
| **Disabled**: if "select for output" (step.output) is not doc.
.. list-table::
* - Variable
- Description
* - **doc.output_format**
`choice <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Command line**:
-do, --doc.output_format
**Environment variable**: ROUGAILCLI_DOC.OUTPUT_FORMAT
- The output format of the generated documentation.
**Choices**:
- console **← (default)**
- asciidoc
- html
- github
- gitlab
- restructuredtext
- json
* - **doc.tabular_template**
`choice <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory` `*disabled*`
**Command line**:
-dm, --doc.tabular_template
**Environment variable**: ROUGAILCLI_DOC.TABULAR_TEMPLATE
- Generate document with this tabular model.
The variables are documented with a tabular view. A template selection allows you to choose the content of each column.
**Choices**:
- two_columns **← (default)**
- three_columns
- four_columns
- five_columns
- six_columns
**Disabled**: "the output format of the generated documentation" (doc.output_format) in json is not compatible with this variable.
* - **doc.contents**
`choice <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `multiple` `mandatory` `*hidden*` `unique`
**Command line**:
-dc, --doc.contents
**Environment variable**: ROUGAILCLI_DOC.CONTENTS
- Generated content.
You can generate three type of document. All variables ("variables"), an example file in YAML format ("example") or change log ("changelog").
**Choices**:
- variables **← (default)**
- example
- changelog
**Hidden**: "the output format of the generated documentation" (doc.output_format) in json is not compatible with changelog or example "generated content" (doc.contents).
* - **doc.title_level**
`integer <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Command line**:
-dt, --doc.title_level
**Environment variable**: ROUGAILCLI_DOC.TITLE_LEVEL
- Starting title level.
**Default**: 1
* - **doc.default_values**
`boolean <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Command line**:
- --doc.default_values
- --doc.no-default_values
**Environment variable**: ROUGAILCLI_DOC.DEFAULT_VALUES
- Modify values to document all variables.
To document leadership or dynamic family variables, it is sometimes necessary to generate values, which can change the values in the configuration. Be careful if you reuse this configuration.
**Default**: true
* - **doc.true_color**
`boolean <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory` `*disabled*`
**Command line**:
- --doc.true_color
- --doc.no-true_color
**Environment variable**: ROUGAILCLI_DOC.TRUE_COLOR
- Display documentation in console always with true color terminal.
**Default**: false
**Disabled**: when the variable "the output format of the generated documentation" (doc.output_format) hasn't the value "console".
The variables in this family are documented in another file
-----------------------------------------------------------
.. note::
| If you separate the variables into different files, the links between the variables will break. Therefore, you must define different filenames for the files containing these variables.
| This family contains lists of variable blocks.
| **Path**: doc.other_root_filenames
.. list-table::
* - Variable
- Description
* - **doc.other_root_filenames.root_path**
`string <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `multiple` `unique`
**Command line**:
--doc.other_root_filenames.root_path
**Environment variable**: ROUGAILCLI_DOC.OTHER_ROOT_FILENAMES.ROOT_PATH
- This file contains child variables of the family.
* - **doc.other_root_filenames.root_doc_path**
`string <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__
**Command line**:
--doc.other_root_filenames.root_doc_path
**Environment variable**: ROUGAILCLI_DOC.OTHER_ROOT_FILENAMES.ROOT_DOC_PATH
- Name of the file.
.. list-table::
* - Variable
- Description
* - **doc.document_a_type**
`boolean <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Command line**:
- --doc.document_a_type
- --doc.no-document_a_type
**Environment variable**: ROUGAILCLI_DOC.DOCUMENT_A_TYPE
- Documentation a structural type.
**Default**: false
Variables and changelog documentation
-------------------------------------
.. note::
| **Path**: doc.tabulars
| `*disabled*`
| **Disabled**: if "the output format of the generated documentation" (doc.output_format) is json or "generated content" (doc.contents) hasn't variables or changelog.
.. list-table::
* - Variable
- Description
* - **doc.tabulars.without_family**
`boolean <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Command line**:
- -df, --doc.tabulars.without_family
- -ndf, --doc.tabulars.no-without_family
**Environment variable**: ROUGAILCLI_DOC.TABULARS.WITHOUT_FAMILY
- Do not add families in documentation.
**Default**: false
* - **doc.tabulars.with_commandline**
`boolean <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Environment variable**: ROUGAILCLI_DOC.TABULARS.WITH_COMMANDLINE
- Add command line informations in documentation.
**Default**: false
* - **doc.tabulars.with_environment**
`boolean <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Command line**:
- -de, --doc.tabulars.with_environment
- -nde, --doc.tabulars.no-with_environment
**Environment variable**: ROUGAILCLI_DOC.TABULARS.WITH_ENVIRONMENT
- Add environment variable informations in documentation.
**Default**: false
* - **doc.tabulars.environment_prefix**
`string <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `*disabled*`
**Command line**:
-dv, --doc.tabulars.environment_prefix
**Environment variable**: ROUGAILCLI_DOC.TABULARS.ENVIRONMENT_PREFIX
- Environment variables prefix name.
**Validator**: should only use uppercase characters
**Default**: ROUGAIL
**Disabled**: when the variable "add environment variable informations in documentation" (doc.tabulars.with_environment) has the value "false".
Changelog documentation
-----------------------
.. note::
| **Path**: doc.changelog
| `*disabled*`
| **Disabled**: if changelog in not in "generated content" (doc.contents).
.. list-table::
* - Variable
- Description
* - **doc.changelog.previous_json_file**
`string <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Command line**:
-dp, --doc.changelog.previous_json_file
**Environment variable**: ROUGAILCLI_DOC.CHANGELOG.PREVIOUS_JSON_FILE
- Previous description file in JSON format.
To generate the changelog, you need to compare the old list of variables (in json format) with the current variables.
Examples configuration
----------------------
.. note::
| **Path**: doc.examples
| `*disabled*`
| **Disabled**: if example is not in "generated content" (doc.contents).
.. list-table::
* - Variable
- Description
* - **doc.examples.comment**
`boolean <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Command line**:
- -dx, --doc.examples.comment
- -ndx, --doc.examples.no-comment
**Environment variable**: ROUGAILCLI_DOC.EXAMPLES.COMMENT
- Add description of variables and families when generate examples.
**Default**: false
* - **doc.examples.comment_column**
`integer <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory` `*disabled*`
**Command line**:
--doc.examples.comment_column
**Environment variable**: ROUGAILCLI_DOC.EXAMPLES.COMMENT_COLUMN
- Comment in examples starts at column.
**Default**: 30
**Disabled**: when the variable "add description of variables and families when generate examples" (doc.examples.comment) has the value "false".

View file

@ -1,29 +0,0 @@
Reformat the structure files
============================
.. note::
| The structure file will be formatted according to a set of rules: empty line between each variable, short-hand notation whenever possible, attribute order, re-indentation (especially for Jinja2 templates), ...
| **Path**: formatter
| `*disabled*`
| **Disabled**: if formatter is not set in "select for output" (step.output).
.. list-table::
* - Variable
- Description
* - **formatter.line_width**
`integer <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Command line**:
--formatter.line_width
**Environment variable**: ROUGAILCLI_FORMATTER.LINE_WIDTH
- Maximum line size.
**Default**: 120

View file

@ -1,17 +0,0 @@
Output modules
======================
Rougail is a collections of modules in order to adjust functionalities to your needs.
:term:`Output` is one of category of subjects. The goal is to display, export or document variable and value to meet the needs of the :term:`integrator` or :term:`operator`.
.. toctree::
:titlesonly:
:caption: Available output
display
table
doc
formatter
ansible
json

View file

@ -1,3 +0,0 @@
Export variables and values to JSON
===================================

View file

@ -1,98 +0,0 @@
Displays the data in a table
============================
.. note::
| The goal is not to display all the variables in the configuration, but only a selection using the labeling mechanism.
| **Path**: table
| `*disabled*`
| **Disabled**: if table is not set in "select for output" (step.output).
.. list-table::
* - Variable
- Description
* - **table.first_column**
`choice <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Command line**:
--table.first_column
**Environment variable**: ROUGAILCLI_TABLE.FIRST_COLUMN
- Content of the first column.
**Validator**: Tag name must not have the same name has first column
**Choices**:
- description
- namespace
**Default**: First column is description if "Tag names" (table.columns) has only one value, otherwise it's namespace.
* - **table.columns**
`string <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `multiple` `mandatory` `unique`
**Command line**:
--table.columns
**Environment variable**: ROUGAILCLI_TABLE.COLUMNS
- Tag names.
Each tag creates a column. The content of the columns comes from the variables with the defined tags.
* - **table.output_format**
`choice <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Command line**:
--table.output_format
**Environment variable**: ROUGAILCLI_TABLE.OUTPUT_FORMAT
- Tag names.
**Choices**:
- console **← (default)**
- github
- asciidoc
- html
- rst
* - **table.header**
`boolean <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Command line**:
- --table.header
- --table.no-header
**Environment variable**: ROUGAILCLI_TABLE.HEADER
- Add header in table.
**Default**: true

View file

@ -8,7 +8,7 @@ The read-write mode
When you are in the design phase, your are designing the structure file or
setting values is some user data files, you have the role of :term:`integrator`
or :term:`operator`. Then you need to have access to all the data, even
or :term:`operator`. Then you need to have access to all the datas, even
those which are :term:`hidden` or :term:`disabled`\ .
In this phase, the configuration shall be in `RW` mode.

View file

@ -40,8 +40,7 @@ That is to say, the :term:`integrator` can change the type of the variable at an
However, the :term:`operator` who adapts the value does not have the possibility of redefining the type of the variable.
.. seealso:: :ref:`the variable mutability <variable_mutability>`
.. seealso:: :doc:`the variable mutability <../concepts>`
Type inference
''''''''''''''
@ -222,7 +221,7 @@ Properties
We already see the property access control.
Remember, we talked about the :ref:`hidden` and :ref:`disabled` variables.
Remember, we talked about :doc:`the hidden and disabled variables <../concepts>`.
These properties become fully meaningful when managing overall consistency.

View file

@ -80,7 +80,7 @@ We have an output like this one:
`No proxy` is an available variable's value. We say that the `proxy_mode` variable is *constrained*
by the possibilities of the `choice` parameter.
.. type-along:: Let's add some user data to this structure
.. type-along:: Let's add some user datas to this structure
.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_010/config/03/config.yml
:linenos:
@ -89,7 +89,7 @@ by the possibilities of the `choice` parameter.
:tutorial:`Download this file from the rougail-tutorials git repository <src/tag/v1.1_010/config/03/config.yml>`
If we run the Rougail CLI with this user data:
If we run the Rougail CLI with this user datas:
.. raw:: html
:url: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_010/config/03/cmd_ro.txt
@ -142,7 +142,7 @@ We have the list of the possible (authorized) values:
:tutorial:`Download this file from the rougail-tutorials git repository <src/tag/v1.1_010/config/04/config.yml>`
If we run the Rougail CLI with this user data:
If we run the Rougail CLI with this user datas:
.. raw:: html
:url: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_010/config/04/cmd_ro.txt
@ -165,14 +165,14 @@ something is going wrong, maybe you need some kind of a strict mode.
Indeed, this warning can be transformed into an error.
If we run the Rougail CLI with this `--cli.invalid_user_data_error` parameter:
If we run the Rougail CLI with this `--cli.invalid_user_datas_error` parameter:
.. raw:: html
:url: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_010/config/04/cmd_invalid.txt
:class: terminal
..
rougail -m firefox/ -u yaml -yf config/03/config.yml --cli.invalid_user_data_error
rougail -m firefox/ -u yaml -yf config/03/config.yml --cli.invalid_user_datas_error
Then we have an `error` output instead of a `warning` output:

View file

@ -322,7 +322,7 @@ then the `manual` family **is enabled**:
.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_051/config/02/config.yml
:linenos:
:language: yaml
:caption: The `proxy_mode`'s manual setting in the :file:`config/02/config.yaml` user data file
:caption: The `proxy_mode`'s manual setting in the :file:`config/02/config.yaml` user datas file
..
---
@ -687,7 +687,7 @@ Here is an example with different user values for handling HTTP and HTTPS:
.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/commit/v1.1_053/config/01/config.yml
:linenos:
:language: yaml
:caption: User data in the user data file :file:`config/01/config.yml` with `use_for_https` as false
:caption: User datas in the user data file :file:`config/01/config.yml` with `use_for_https` as false
..
---
@ -747,7 +747,7 @@ Here is an example with identical HTTP and HTTPS proxy configuration:
.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/commit/v1.1_053/config/02/config.yml
:linenos:
:language: yaml
:caption: User data in the user data file :file:`config/02/config.yml` with `use_for_https` as true
:caption: User datas in the user data file :file:`config/02/config.yml` with `use_for_https` as true
..
---

View file

@ -132,7 +132,7 @@ The value is obviously not a domain name, then when we will launch the Rougail C
:class: terminal
..
rougail -m firefox/ -u yaml -yf config/03/config.yml --cli.invalid_user_data_error
rougail -m firefox/ -u yaml -yf config/03/config.yml --cli.invalid_user_datas_error
we then have this output:
@ -172,7 +172,7 @@ we will see a little problem:
:class: terminal
..
rougail -m firefox/ -u yaml -yf config/02/config.yml --cli.invalid_user_data_error
rougail -m firefox/ -u yaml -yf config/02/config.yml --cli.invalid_user_datas_error
we then have this output:
@ -356,7 +356,7 @@ Again, we launch the Rougail CLI:
:class: terminal
:url: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/commit/v1.1_032/config/03/cmd_invalid.txt
.. rougail -m firefox/ -u yaml -yf config/03/config.yml --cli.invalid_user_data_error
.. rougail -m firefox/ -u yaml -yf config/03/config.yml --cli.invalid_user_datas_error
And we have this output:

View file

@ -1,81 +0,0 @@
Load user data from Ansible compatible file
===========================================
.. note::
| Ansible offers a tool (ansible-vault) for encrypting inventory files. With this user data you can open an encrypt inventory file. This is a perfect way to manage a smooth migration from Ansible inventory to Rougail. Or it could be a way to encrypt these secrets in a file with a secure format.
| **Path**: ansible
| `*disabled*`
| **Disabled**: if ansible is not set in "select for user data" (step.user_data).
.. list-table::
* - Variable
- Description
* - **ansible.filename**
`UNIX filename <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `multiple` `mandatory` `*disabled*` `unique`
**Command line**:
--ansible.filename
**Environment variable**: ROUGAILCLI_ANSIBLE.FILENAME
- Ansible filename inventory.
**Validators**:
- this filename could be a relative path
- this file must exist
- 'file type allowed: "file"'
**Disabled**: if ansible is not set in "select for user data" (step.user_data).
* - **ansible.secret**
`secret <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory` `*disabled*`
**Command line**:
--ansible.secret
**Environment variable**: ROUGAILCLI_ANSIBLE.SECRET
- Secret to decrypt file.
**Disabled**: if ansible is not set in "select for user data" (step.user_data).
* - **ansible.file_with_secrets**
`choice <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory` `*disabled*`
**Command line**:
--ansible.file_with_secrets
**Environment variable**: ROUGAILCLI_ANSIBLE.FILE_WITH_SECRETS
- Ansible files that may contain secrets.
**Choices**:
- all **← (default)**
- first
- last
- none
**Disabled**: if ansible is not set in "select for user data" (step.user_data).

View file

@ -1,56 +1,3 @@
Load user data secrets from Bitwarden
Load user datas from Bitwarden server
=====================================
.. note::
| Load the secrets from Bitwarden (or a compatible server like Vaultwarden). The data is retrieved using the official command line "bw" or the alternative command "rbw" (faster). Before using Rougail, the command must be logged and unlocked.
| **Path**: bitwarden
| `*disabled*`
| **Disabled**: if bitwarden is not set in "select for user data" (step.user_data).
.. list-table::
* - Variable
- Description
* - **bitwarden.command**
`choice <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `multiple` `mandatory` `unique`
**Command line**:
--bitwarden.command
**Environment variable**: ROUGAILCLI_BITWARDEN.COMMAND
- Command line used to retrieve secrets.
Command line must be in PATH.
**Choices**:
- rbw **← (default)**
- bw **← (default)**
* - **bitwarden.mock_enable**
`boolean <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Command line**:
- --bitwarden.mock_enable
- --bitwarden.no-mock_enable
**Environment variable**: ROUGAILCLI_BITWARDEN.MOCK_ENABLE
- Simulate password generation instead of retrieve them.
**Default**: false

View file

@ -1,7 +1,3 @@
Load user data from commandline parser
Load user datas from commandline parser
=======================================
.. note::
| Load the user data from the current command line.
| **Disabled**: if bitwarden is not set in "select for user data" (step.user_data).

View file

@ -1,69 +1,3 @@
Load user data from environment variables
=========================================
Load user datas from a environment variable
===========================================
.. note::
| Variable values can be defined directly from an environment variable.
|
| Environnement variable names begin with a prefix (by default ROUGAIL_) followed by the variable path in uppercase, for example: ROUGAIL_MY_VARIABLE. If you are using namespaces, the prefix is the name of the namespace in uppercase.
|
| Note that variable paths can contain dots ("."), which are not permitted everywhere. To avoid any issues, use the `env` command, for example: `env ROUGAIL_MY_FAMILY.MY_VARIABLE=1 rougail`.
|
| For values, there is no difference between a number and a letter (they can be enclosed in quotes or not). However, booleans are True or False. The separator for multiple variables is a comma.
| **Path**: environment
| `*disabled*`
| **Disabled**: if environment is not set in "select for user data" (step.user_data).
.. list-table::
* - Variable
- Description
* - **environment.default_environment_name**
`string <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Command line**:
--environment.default_environment_name
**Environment variable**: ROUGAILCLI_ENVIRONMENT.DEFAULT_ENVIRONMENT_NAME
- Name of the default environment prefix.
**Validator**: should only use uppercase character
**Default**: ROUGAIL
* - **environment.custom_separator**
`string <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__
**Command line**:
--environment.custom_separator
**Environment variable**: ROUGAILCLI_ENVIRONMENT.CUSTOM_SEPARATOR
- Replace the separator character "." in path by an other.
The character dot (".") may not be allowed in the environment variable name. Note that the variable name with dots is always available in addition to the name with this character.
* - **environment.with_secrets**
`boolean <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Command line**:
- --environment.with_secrets
- --environment.no-with_secrets
**Environment variable**: ROUGAILCLI_ENVIRONMENT.WITH_SECRETS
- Environnement variables may contain secrets.
**Default**: true

View file

@ -1,17 +1,21 @@
User data modules
User data description
======================
Rougail is a collections of modules in order to adjust functionalities to your needs.
Rougail is a collections of subproject in order to adjust functionalities to your needs.
:term:`User data` is one of category of subjects. The goal is to setup variable with value defined by the :term:`operator`.
User datas is one of category of subjects. The goal is to setup variable with value defined by the user.
There are different user datas types:
.. toctree::
:titlesonly:
:caption: Available user data
:caption: Use library
yaml
ansible
environment
bitwarden
commandline
bitwarden
questionary
.. ansible

View file

@ -1,54 +1,3 @@
Define user data interactively in the console
Load user datas from a command line interface
=============================================
.. note::
| The user will enter variable values in a command-line interface. The variables will be displayed one after another, allowing the user to change or add values.
| **Path**: questionary
| `*disabled*`
| **Disabled**: if questionary is not set in "select for user data" (step.user_data).
.. list-table::
* - Variable
- Description
* - **questionary.mandatory**
`boolean <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Command line**:
- -qm, --questionary.mandatory
- -nqm, --questionary.no-mandatory
**Environment variable**: ROUGAILCLI_QUESTIONARY.MANDATORY
- Ask values only for mandatories variables without any value.
**Default**: false
* - **questionary.show_secrets**
`boolean <https://rougail.readthedocs.io/en/latest/variable.html#variables-types>`__ `mandatory`
**Command line**:
- -qs, --questionary.show_secrets
- -nqs, --questionary.no-show_secrets
**Environment variable**: ROUGAILCLI_QUESTIONARY.SHOW_SECRETS
- Show secrets instead of obscuring them.
**Default**: false

View file

@ -5,7 +5,7 @@ Charge user data from YAML file
| **Path**: yaml
| `*disabled*`
| **Disabled**: if yaml is not set in "select for user data" (step.user_data).
| **Disabled**: if yaml is not set in "select for user datas" (step.user_data).