types 80
This commit is contained in:
parent
c9d32dce9f
commit
00d17badf8
2 changed files with 59 additions and 11 deletions
|
|
@ -19,12 +19,12 @@ Rougail
|
||||||
7 tutorial/tutorial.rst:546: WARNING: term not in glossary: 'leader'
|
7 tutorial/tutorial.rst:546: WARNING: term not in glossary: 'leader'
|
||||||
8 tutorial/tutorial.rst:547: WARNING: term not in glossary: 'follower'
|
8 tutorial/tutorial.rst:547: WARNING: term not in glossary: 'follower'
|
||||||
9 variable.rst:38: WARNING: label non défini: 'convention on variable names'
|
9 variable.rst:38: WARNING: label non défini: 'convention on variable names'
|
||||||
10 variable.rst:137: WARNING: term not in glossary: 'leading'
|
10 variable.rst:137: WARNING: term not in glossary: 'leading'
|
||||||
11 variable.rst:154: WARNING: term not in glossary: 'required'
|
11 variable.rst:154: WARNING: term not in glossary: 'required'
|
||||||
12 variable.rst:156: WARNING: term not in glossary: 'leader'
|
12 variable.rst:156: WARNING: term not in glossary: 'leader'
|
||||||
13 variable.rst:156: WARNING: term not in glossary: 'follower'
|
13 variable.rst:156: WARNING: term not in glossary: 'follower'
|
||||||
14 variable.rst:186: WARNING: term not in glossary: 'multiple'
|
14 variable.rst:186: WARNING: term not in glossary: 'multiple'
|
||||||
15 variable.rst:186: WARNING: term not in glossary: 'multiple'
|
15 variable.rst:186: WARNING: term not in glossary: 'multiple'
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/logo.png
|
.. image:: images/logo.png
|
||||||
|
|
|
||||||
|
|
@ -32,11 +32,11 @@ This feature is essential for having a truly adaptable tool.
|
||||||
|
|
||||||
.. note:: It is actually possible to add types,
|
.. note:: It is actually possible to add types,
|
||||||
but that involves adding predefined types to the :term:`tiramisu` underlying consistency library itself,
|
but that involves adding predefined types to the :term:`tiramisu` underlying consistency library itself,
|
||||||
and that’s a different matter altogether. There is a simpler way to achieve this: the Rougail type definition.
|
and that’s a different matter altogether. There is a simpler way to achieve this with the Rougail type definition feature.
|
||||||
|
|
||||||
It is possible in Rougail to create custom types in a very simple way, it is much like defining families.
|
It is possible in Rougail to create custom types in a very simple way, it is much like defining families.
|
||||||
|
|
||||||
Now our folder structure will be expanded a bit:
|
Our folder structure will be expanded a bit:
|
||||||
|
|
||||||
.. raw:: html
|
.. raw:: html
|
||||||
:url: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/commit/v1.1_080/tree.html
|
:url: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/commit/v1.1_080/tree.html
|
||||||
|
|
@ -120,15 +120,15 @@ It's perfectly natural in the rougail style.
|
||||||
Now in the `address` family it is not necessary to specify the `domainname` type nor the `allow_ip` parameter:
|
Now in the `address` family it is not necessary to specify the `domainname` type nor the `allow_ip` parameter:
|
||||||
|
|
||||||
.. code-block:: yaml
|
.. code-block:: yaml
|
||||||
:caption: We can omit this now due to the type definition
|
:caption: We can omit these settings now due to the type definition
|
||||||
|
|
||||||
description: HTTP address
|
description: HTTP address
|
||||||
type: domainname
|
type: domainname
|
||||||
params:
|
params:
|
||||||
allow_ip: true
|
allow_ip: true
|
||||||
|
|
||||||
But if we use our new type we need to declare it to Rougail in order to make it available.
|
But in order to use our new type we need to declare it to Rougail otherwise the new type is not available.
|
||||||
The Rougail CLI has a `--types` type declaration command line option for this purpose.
|
The Rougail CLI has the `--types` type declaration command line option for this purpose.
|
||||||
Let's launch the rougail CLI with this command line parameter:
|
Let's launch the rougail CLI with this command line parameter:
|
||||||
|
|
||||||
.. raw:: html
|
.. raw:: html
|
||||||
|
|
@ -145,6 +145,54 @@ We want the same behavior as usual.
|
||||||
|
|
||||||
The type definition adds nothing to the structural logic. It's just a very convenient way to save time when writing structure files.
|
The type definition adds nothing to the structural logic. It's just a very convenient way to save time when writing structure files.
|
||||||
|
|
||||||
|
.. FIXME Ici nous avons juste changé la valeur des deux variables
|
||||||
|
|
||||||
|
.. type-along:: kinematics of setting the `address` value
|
||||||
|
|
||||||
|
Let's take the time to explain how the value of the variable `manual.http_proxy.address` is determined using the type definition.
|
||||||
|
|
||||||
|
The :file:`10-manual.yml` defines the :file:`manual.https_proxy` family
|
||||||
|
which is defined with the help of the `proxy` type:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
http_proxy:
|
||||||
|
description: HTTP Proxy
|
||||||
|
type: proxy
|
||||||
|
|
||||||
|
In the :file:`types/proxy/00_type.yml` file we have the `proxy` type definition and its default value setting:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
default:
|
||||||
|
variable: __.http_proxy.address
|
||||||
|
|
||||||
|
This default value setting point to the `http_proxy.address` value in the :file:`firefox/10-manual.yml` structure file:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
address:
|
||||||
|
default: null
|
||||||
|
|
||||||
|
Which is `null` by default but in the :file:`config/01/config.yml` user data file we have the `http.proxy.net` value set:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
manual:
|
||||||
|
http_proxy:
|
||||||
|
address: http.proxy.net
|
||||||
|
|
||||||
|
In the CLI standard output we can see that the `http_proxy.address` variable value is
|
||||||
|
finally set by the user data file:
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
┗━━ 📂 manual (Manual proxy configuration)
|
||||||
|
┣━━ 📂 http_proxy (HTTP Proxy)
|
||||||
|
┃ ┣━━ 📓 address (Proxy address): http.proxy.net ◀ loaded from the YAML
|
||||||
|
┃ ┃ file "config/01/config.yml"
|
||||||
|
|
||||||
|
|
||||||
HTTPS and SOCKS Proxy
|
HTTPS and SOCKS Proxy
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue