diff --git a/docs/tutorial/calculation.rst b/docs/tutorial/calculation.rst index 47a446a8e..8c850addf 100644 --- a/docs/tutorial/calculation.rst +++ b/docs/tutorial/calculation.rst @@ -143,9 +143,113 @@ Deactivating a family means that we will not be able to access it as well as the we are using Jinja in a classical way, that is, Jinja allows us to handle different cases, for example with the `if` statement. +What can be calculated? +--------------------------- + +We have seen that the `disabled` or `hidden` properties could be calculated. +The default values can be calculated too. + +.. todo:: montrer un exemple de valeur par défaut calculées (type jinja) .. todo:: montrer aussi ici des exemples de calculs de valeurs variables, ce qui est un des usages principaux de jinja + +Using jinja in a dynamic family declaration +----------------------------------------------- + +Let's come back to the previous section's :ref:`dynamic family example `\ . + +In a dynamic family, as seen before, you have the possibility to name your identifier. In the classic declaration, +the identifier's variable is named "identifier" by default. Sounds logical: + +.. code-block:: yaml + + "{{ identifier }}_proxy": + description: "{{ identifier }} Proxy" + dynamic: + - HTTPS + - SOCKS + dynamic: + - HTTPS + - SOCKS + + +Here the identifer's variable takes the value of the `dynamic` family parameter. + +We have another possibility: + +.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_050/firefox/20-manual.yml + :language: yaml + :caption: firefox/20-proxy.yml + +.. + manual: + + use_for_https: + description: Also use this proxy for HTTPS + default: true + + "{{ identifier }}_proxy": + description: "{{ identifier }} Proxy" + dynamic: + - HTTPS + - SOCKS + hidden: + jinja: | + {% if my_identifier == 'HTTPS' and manual.use_for_https %} + HTTPS is same has HTTP + {% endif %} + params: + my_identifier: + type: identifier + description: | + in HTTPS case if "manual.use_for_https" is set to True + + address: + description: "{{ identifier }} address" + default: + variable: manual.http_proxy.address + + port: + description: "{{ identifier }} port" + default: + variable: manual.http_proxy.port + + version: + description: SOCKS host version used by proxy + choices: + - v4 + - v5 + default: v5 + disabled: + type: identifier + when: 'HTTPS' + +Here in the `hidden` property we have the possibility to name an identifier: + +.. code-block:: yaml + + params: + my_identifier: + type: identifier + +Here, the identifer is named `my_identifier`, in a jinja calculation: + +.. code-block:: yaml + + hidden: + jinja: | + {% if my_identifier == 'HTTPS' and manual.use_for_https %} + HTTPS is same has HTTP + {% endif %} + params: + my_identifier: + type: identifier + description: | + in HTTPS case if "manual.use_for_https" is set to True + + + .. keypoints:: Key points Here we have come to the possibility of making any kind of calculations based on the state of the :term:`configuration`. diff --git a/docs/tutorial/dynfam.rst b/docs/tutorial/dynfam.rst index 9cc01dd4d..11422a136 100644 --- a/docs/tutorial/dynfam.rst +++ b/docs/tutorial/dynfam.rst @@ -185,6 +185,9 @@ We can see that the dynamic family has created: as we wanted, containing an address and a port. + +.. _conditional_hidden_family: + A conditional hidden familiy -------------------------------- @@ -243,7 +246,6 @@ it uses `use_for_https` variable: description: Also use this proxy for HTTPS default: true - .. keypoints:: Key points - We now know what a generic family is, with its identifier.