From aaeb18f199cae145d0bc1aa667dce88d564e9946 Mon Sep 17 00:00:00 2001 From: gwen Date: Wed, 19 Nov 2025 14:17:50 +0100 Subject: [PATCH] preliminary file ok --- docs/tutorial/images/proxy_choices.png | Bin 0 -> 38201 bytes docs/tutorial/preliminary.rst | 45 ++++++++++++++++--------- 2 files changed, 29 insertions(+), 16 deletions(-) create mode 100644 docs/tutorial/images/proxy_choices.png diff --git a/docs/tutorial/images/proxy_choices.png b/docs/tutorial/images/proxy_choices.png new file mode 100644 index 0000000000000000000000000000000000000000..190e9a2a0c90cf4a7b39b64674f074d228ce8f07 GIT binary patch literal 38201 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 X>cfxET++FS@Fg#!cp>Gy-oyU~x&mU* literal 0 HcmV?d00001 diff --git a/docs/tutorial/preliminary.rst b/docs/tutorial/preliminary.rst index 055c0945b..686b9f349 100644 --- a/docs/tutorial/preliminary.rst +++ b/docs/tutorial/preliminary.rst @@ -190,9 +190,9 @@ Let's add a default value to this `proxy_mode` variable. .. admonition:: how to set a value -- the assignment - A default value has been set, great. This raises a question about what a normal value is. + A default value has been set, great. This raises the question of what constitutes a value other than a default value. - Now then how can I assign a normal value to a variable? + How can I assign a value to a variable? .. type-along:: The different rougail roles and the default values @@ -239,7 +239,7 @@ he is responsible of other files called the :term:`user data file`\ s. .. exercise:: Folder structure update - Now we add a :file:`config/config.yaml` file in our project:: + Now we add a :file:`config/config.yaml` file, the :file:`config` folder is where we will place the user datas:: rougail-tutorials ├── firefox @@ -261,9 +261,10 @@ it's up to the operator to do the job in the `config.yaml` file: --- proxy_mode: No proxy -:tutorial:`Download this file from the rougail-tutorials git repository ` +:tutorial:`Download this file from the rougail-tutorials git repository ` -With the rougail CLI the operator has to add the `-u yaml -ff config/config.yaml` options: +If you want the user datas to be taken into account, you must provide the `-u yaml -ff config/config.yaml` options +to the rougail CLI: .. code-block:: text :class: terminal @@ -285,6 +286,8 @@ which gives us this output: ┗━━ 📓 proxy_mode: No proxy ◀ loaded from the YAML file "config/02/config.yaml" +We can see in the output result that the :file:`config/02/config.yml` user data file has been taken into account. + .. admonition:: Important fact - the integrator works on structure files @@ -292,16 +295,26 @@ which gives us this output: 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. -.. type-along:: Defining a choice type +Limits the possible values for the variable +------------------------------------------------- -In our firefox use case, the real type of the `proxy_mode` variable will be now set as a `choice` type: +.. type-along:: For those who follow the tutorial with the help of the git repository -.. seealso:: Have a look at the definition of the :term:`choice type variable ` + Now you need to checkout the `v1.1_004` version:: + + git checkout v1.1_004 + +In our firefox use case, we can see that we have different possibilites available for the `proxy_mode` variable values: + + +.. image:: images/proxy_choices.png + +Let's insert these different possible choices with a `choice` variable's property here: .. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_004/firefox/00-proxy.yml :linenos: :language: yaml - :caption: The real :file:`firefox/proxy.yml` Rougail structure file with a choice type + :caption: The real :file:`firefox/proxy.yml` Rougail structure file with different possible choices :name: RougailDictionaryChoiceType .. @@ -318,7 +331,7 @@ In our firefox use case, the real type of the `proxy_mode` variable will be now :tutorial:`Download this file from the rougail-tutorials git repository ` -- Let's run the Rougail CLI +- Let's run the Rougail CLI now: .. code-block:: text :class: terminal @@ -344,13 +357,14 @@ We have an output like this one: The `proxy_mode` variable here, implicitely requires a value. It is a :term:`mandatory` variable. -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". +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". -The constraints that come with the `choice` type ----------------------------------------------------- +.. todo:: ajouter une sortie qui montre que la valeur provient du user data file. -We say that the `proxy_mode` variable is *constrained* (by the `choice` type). +.. type-along:: The constraints that come with the `choice` property +The `proxy_mode` variable's possible values is *constrained*. We have the list of the possible (authorized) values: - `No proxy` @@ -369,11 +383,10 @@ We have the list of the possible (authorized) values: - :term:`structure file `: structure description file - :term:`variable`: an option's name which has a value - a variable's description - - a variable's type - a variable's default value - the :term:`integrator` and :term:`operator` roles - a mandatory value - - a choice type + - the possibility to constrain the possible values of a variable **Progress**