preliminary file in the tutorial ok

This commit is contained in:
gwen 2025-02-05 07:18:50 +01:00
parent b4efbf1d71
commit cc54cf675f

View file

@ -23,7 +23,7 @@ Preliminaries
workplace
├── firefox
   │   ├── dictionary.yml
   │   └── dictionary.yml
- Let's make a :file:`workplace` directory, with a :file:`firefox` subfolder.
- First, we wil make a :term:`dictionary`, so let's create a :file:`dictionary.yml` file
@ -62,14 +62,14 @@ This is a first Rougail variable in a Rougail dictionnary.
---
proxy_mode:
- Then we will run this command
- Then if we run the Rougail CLI utility command
.. code-block:: text
:class: terminal
rougail -v 1.1 -m firefox/
which actually outputs an error:
we will actually have an error:
.. raw:: html
:url: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_010/config/01/output_ro.html
@ -82,8 +82,21 @@ which actually outputs an error:
Because this variable is :term:`mandatory` and needs to be set **but** there's no value yet.
So we can therefore see this consequence:
Here we juste add a variable's description, which is a good practice.
.. important:: Once defined, an option configuration :term:`value` is :term:`mandatory`.
Rougail waits for the `proxy_mode` configuration option's value to be set.
.. seealso:: To go further, have a look at the :tiramisu:`mandatory option <glossary.html#term-mandatory-option>` Tiramisu's definition.
.. glossary::
mandatory
A variable is mandatory when a value is required, that is, `None` is not an option.
Then we just add a variable's description, which is a good practice.
.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_011/firefox/00-proxy.yml
:language: yaml
@ -137,8 +150,6 @@ So far we have only talked about the one that writes the structure files. It is
(or not) to be set, and so on. His responsabilites are the **structuration** and the **consistency**
of the variables.
.. image:: images/integrator.png
Now we will talk about the one that defines the values. It is called the operator.
.. glossary::
@ -150,73 +161,57 @@ Now we will talk about the one that defines the values. It is called the operato
The user :term:`value`\ s, that is the values that have been set by the operator, are of course type validated by the :term:`structure file definition <dictionary>`.
.. image:: images/operator.png
The operator can use the Rougail CLI interface:
.. image:: images/QuestionaryChoice.png
.. index:: Rougail CLI
The Rougail CLI can output a rather complete view of the dataset:
.. image:: images/UserDataOutput.png
.. FIXME GWEN j'en suis là
Values are mandatory
-------------------------
.. important:: It is the operator's responsibility to set configuration options values.
So, if :
- there is no default value set in the structure file,
- no value is set in the value file:
.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_010/firefox/00-proxy.yml
:linenos:
:language: yaml
:caption: The :file:`firefox/00-proxy.yaml` Rougail structure file, with no default value set.
:name: RougailDictionaryNoDefault
..
---
proxy_mode:
Then if we lauch the rougail CLI command:
.. code-block:: text
:class: terminal
:caption: A rougail Command Line Utility call with the :file:`config/01/config.yaml` Rougail dictionnary file
rougail -v 1.1 -m firefox -u file -ff config/01/config.yaml
It will output an error :
.. raw:: html
:url: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/commit/v1.1_010/config/01/output_ro.html
:class: error-box
..
<pre>🛑 ERRORS
<span style="color: #ff0000">┣━━ </span>The following variables are mandatory but have no value:
<span style="color: #ff0000">┗━━ </span> - proxy_mode
</pre>
And we can deduce the following result:
.. important:: Once defined, an option configuration :term:`value` is :term:`mandatory`.
Rougail waits for the `proxy_mode` configuration option's value to be set.
.. seealso:: To go further, have a look at the :tiramisu:`mandatory option <glossary.html#term-mandatory-option>` Tiramisu's definition.
It is the operator's responsibility to set configuration options values.
He does not work with the dictionary (the structure file),
he is responsible for other files, called the configuration files.
.. glossary::
mandatory
configuration file
A configuration file is a file where only the values ​​of the configuration options are assigned. The structure, the consistency of the variables between them is not the responsibility of these files (but of the dictionary files).
A variable is mandatory when a value is required, that is, `None` is not an option.
.. exercise:: Folder structure update
Now we add a :file:`config/config.yml` file in our project::
workplace
├── firefox
   │   ├── dictionary.yml
└── config
└── config.yml
.. type-along:: how to set a default value in a configuration file
So for example if the integrator has not set any default value in his structure file,
the operator can do it like this:
.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_011/config/02/config.yaml
:language: yaml
:caption: The Rougail configuration file :file:`config/config.yml`, with a default value set.
:name: RougailConfigDefaultValue
..
---
proxy_mode: No proxy
With the rougail CLI the operator has to add the `-u file -ff config/config.yml` options:
.. code-block:: text
:class: terminal
:caption: A rougail Command Line Utility call with the :file:`config/config.yml` Rougail configuration file
rougail -v 1.1 -m firefox -u file -ff config/01/config.yaml
Let us clarify this essential point:
- the integrator works on dictionaries
- the operator works on configuration files
.. note:: Most of the time, the integrator and the operator are one and the same person, here we are talking about roles and not necessarily about people.
Variable's type
-----------------
@ -233,13 +228,18 @@ If the operator sets an option value for example with the `number` type, like th
type: number
Then Rougail will expect a `int` or a `float` as a value for the `example_var` variable.
In our firefox use case, the real type of the `proxy_mode` variable is a `choice` type:
In our firefox use case, the real type of the `proxy_mode` variable will be now set as a `choice` type:
.. type-along:: Defining a choice type
A choice type variable is a variable where the content is constrained by a list
.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_013/firefox/00-proxy.yml
:linenos:
:language: yaml
:caption: The :file:`firefox/00-proxy.yml` Rougail dictionnary file, with a default value set.
:name: RougailDictionaryChoiceTypeWitheDefault
:caption: The real :file:`firefox/proxy.yml` Rougail dictionnary file with a choice type
:name: RougailDictionaryChoiceType
..
---
@ -254,6 +254,15 @@ In our firefox use case, the real type of the `proxy_mode` variable is a `choice
- Automatic proxy configuration URL
default: No proxy
- Then if we run the Rougail CLI
.. code-block:: text
:class: terminal
rougail -v 1.1 -m firefox/
We will have an output like this:
.. raw:: html
:url: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/commit/v1.1_013/config/01/output_ro.html
:class: output
@ -271,8 +280,7 @@ In our firefox use case, the real type of the `proxy_mode` variable is a `choice
The `proxy_mode` variable here, implicitely requires a value. It is a :term:`mandatory` variable.
It shall have a value, but what if the user *does not* specify any value?
There is a possibility of setting a default value, wich is set as `No proxy` by default.
As we set the `proxy_mode` variable as `No proxy` by default, we actually have specified a value, and the value appears in yellow, which means : "set by default".
Container type
-----------------
@ -294,11 +302,11 @@ We have the list of the possible (authorized) values:
The `proxy_mode` setting is "choice" (`type: choice`) means that
there is a list of available values that can be selected.
.. note:: Indeed, in the Firefox configuration, it is possible to define several configuration modes,
from no proxy at all (`no proxy`) to a kind of automatic configuration mode from a file (`set up proxy configuration from a file`).
.. keypoints:: Key points progress
Indeed, in the Firefox configuration, it is possible to define several configuration modes, from no proxy at all (`no proxy`) to a kind of automatic configuration mode from a file (`set up proxy configuration from a file`).
**Keywords**
- :term:`structure file <dictionary>`: structure description file