No description
Find a file
2026-04-17 12:27:01 +02:00
config [tutorial v1.1_070] A conditional hidden family with Jinja (config and doc) 2026-04-17 12:27:01 +02:00
firefox [tutorial v1.1_070] A conditional hidden family with Jinja 2026-04-17 12:27:01 +02:00
firefox.png [tutorial v1.1_052] A hidden family (config and doc) 2026-04-17 12:26:52 +02:00
foxyproxy.png [init] Discover Rougail 2026-04-17 12:26:16 +02:00
install.txt [init] Discover Rougail 2026-04-17 12:26:16 +02:00
README.md [tutorial v1.1_070] A conditional hidden family with Jinja (config and doc) 2026-04-17 12:27:01 +02:00
tree.html [tutorial v1.1_070] A conditional hidden family with Jinja (config and doc) 2026-04-17 12:27:01 +02:00

[tutorial v1.1_070] A conditional hidden family with Jinja

Read the tutorial "A conditional hidden family with Jinja" in the documentation

Screenshot

Firefox Proxy setting

Clone and install

To test this tutorial, you need to download this repository and install Rougail:

git clone -b 1.1 https://forge.cloud.silique.fr/stove/rougail-tutorials.git
cd rougail-tutorials
python -m venv venv_rougail
. venv_rougail/bin/activate
pip install rougail-cli rougail-output-exporter rougail-output-doc rougail-user-data-yaml

Then switch to the tutorial page:

git switch --detach v1.1_070

Structure

.
└── firefox
    ├── 00-proxy.yml
    ├── 10-manual.yml
    └── 20-manual.yml


Contents of the firefox/20-manual.yml file

%YAML 1.2
---
version: 1.1

manual:

  use_for_https: true  # Also use this proxy for HTTPS

  '{{ identifier }}_proxy':
    description: '{{ identifier }} Proxy'
    hidden:
      jinja: |-
        {% if _.use_for_https %}
          HTTPS is same has HTTP
        {% endif %}        
    dynamic:
      - HTTPS
      - SOCKS

    address:
      description: '{{ identifier }} address'
      default:
        variable: __.http_proxy.address

    port:
      description: '{{ identifier }} port'
      default:
        variable: __.http_proxy.port

    version:
      description: SOCKS host version used by proxy
      choices:
        - v4
        - v5
      default: v5
      disabled:
        type: identifier
        when: HTTPS
...


Let's generate the documentation```shell

rougail -m firefox/ -o doc

| Variable                                                                                                                                                   | Description                                                                                                                                                                                                                                                                  |
|------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **<a id="proxy_mode" name="proxy_mode">proxy_mode</a>**<br/>[`choice`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `mandatory` | Configure Proxy Access to the Internet.<br/>**Choices**: <br/>•&nbsp;No proxy **← (default)**<br/>•&nbsp;Auto-detect proxy settings for this network<br/>•&nbsp;Use system proxy settings<br/>•&nbsp;Manual proxy configuration<br/>•&nbsp;Automatic proxy configuration URL |

#### Manual proxy configuration

> [!NOTE]
> 
> **Path**: manual\
> *`disabled`*\
> **Disabled**: when the variable "[Configure Proxy Access to the Internet](#proxy_mode)" hasn't the value "Manual proxy configuration".

##### HTTP Proxy

> [!NOTE]
> 
> **Path**: manual.http_proxy

| Variable                                                                                                                                                                                                    | Description                                                                                                                                                                                                                |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **<a id="manual.http_proxy.address" name="manual.http_proxy.address">manual.http_proxy.address</a>**<br/>[`domainname`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `mandatory` | HTTP address.<br/>**Validators**: <br/>•&nbsp;type domainname<br/>•&nbsp;the domain name can be an IP                                                                                                                      |
| **<a id="manual.http_proxy.port" name="manual.http_proxy.port">manual.http_proxy.port</a>**<br/>[`port`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `mandatory`                | HTTP Port.<br/>**Validators**: <br/>•&nbsp;well-known ports (1 to 1023) are allowed<br/>•&nbsp;registred ports (1024 to 49151) are allowed<br/>•&nbsp;private ports (greater than 49152) are allowed<br/>**Default**: 8080 |

| Variable                                                                                                                                                                                  | Description                                          |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------|
| **<a id="manual.use_for_https" name="manual.use_for_https">manual.use_for_https</a>**<br/>[`boolean`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `mandatory` | Also use this proxy for HTTPS.<br/>**Default**: true |

##### *HTTPS* or *SOCKS* Proxy

> [!NOTE]
> 
> This family builds families dynamically.\
> **Path**: 
> - manual.*https*_proxy
> - manual.*socks*_proxy\
> *`hidden`*\
> **Hidden**: depends on a calculation.\
> **Identifiers**: 
> - HTTPS
> - SOCKS

| Variable                                                                                                                                                                                                                                                                    | Description                                                                                                                                                                                                                                                                                           |
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **<a id="manual.:::identifier:::_proxy.address" name="manual.:::identifier:::_proxy.address">manual.*https*_proxy.address</a>**<br/>**manual.*socks*_proxy.address**<br/>[`domainname`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `mandatory` | *HTTPS* or *SOCKS* address.<br/>**Validators**: <br/>•&nbsp;type domainname<br/>•&nbsp;the domain name can be an IP<br/>**Default**: the value of the variable "[HTTP address](#manual.http_proxy.address)".                                                                                          |
| **<a id="manual.:::identifier:::_proxy.port" name="manual.:::identifier:::_proxy.port">manual.*https*_proxy.port</a>**<br/>**manual.*socks*_proxy.port**<br/>[`port`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `mandatory`                   | *HTTPS* or *SOCKS* port.<br/>**Validators**: <br/>•&nbsp;well-known ports (1 to 1023) are allowed<br/>•&nbsp;registred ports (1024 to 49151) are allowed<br/>•&nbsp;private ports (greater than 49152) are allowed<br/>**Default**: the value of the variable "[HTTP Port](#manual.http_proxy.port)". |
| **<a id="manual.:::identifier:::_proxy.version" name="manual.:::identifier:::_proxy.version">manual.*socks*_proxy.version</a>**<br/>[`choice`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `mandatory` *`disabled`*                             | SOCKS host version used by proxy.<br/>**Choices**: <br/>•&nbsp;v4<br/>•&nbsp;v5 **← (default)**<br/>**Disabled**: when the identifier is "HTTPS".                                                                                                                                                     |
***
## User datas### Example 1#### config/01/config.yml
```yml
---
proxy_mode: Manual proxy configuration
manual:
  http_proxy:
    address: http.proxy.net
    port: 3128
  use_for_https: false
  https_proxy:
    address: https.proxy.net

Output```shell

rougail -m firefox/ -u yaml -yf config/01/config.yml

> [!NOTE]
>
> **Caption:**
> - Variable
> - <span style="color: #B8860B">Default value</span>
> - <span style="color: #006400">Modified value</span>
> - (:hourglass_flowing_sand: Original default value)

Variables:
- :notebook: proxy_mode (Configure Proxy Access to the Internet): <span style="color: #006400">Manual proxy configuration</span> ← loaded from the YAML file "config/01/config.yml" (:hourglass_flowing_sand: No proxy)
- :open_file_folder: manual (Manual proxy configuration)
  - :open_file_folder: http_proxy (HTTP Proxy)
    - :notebook: address (HTTP address): <span style="color: #006400">http.proxy.net</span> ← loaded from the YAML file "config/01/config.yml"
    - :notebook: port (HTTP Port): <span style="color: #006400">3128</span> ← loaded from the YAML file "config/01/config.yml" (:hourglass_flowing_sand: 8080)
  - :notebook: use_for_https (Also use this proxy for HTTPS): <span style="color: #006400">false</span> ← loaded from the YAML file "config/01/config.yml" (:hourglass_flowing_sand: true)
  - :open_file_folder: https_proxy (HTTPS Proxy)
    - :notebook: address (HTTPS address): <span style="color: #006400">https.proxy.net</span> ← loaded from the YAML file "config/01/config.yml" (:hourglass_flowing_sand: http.proxy.net)
    - :notebook: port (HTTPS port): <span style="color: #B8860B">3128</span>
  - :open_file_folder: socks_proxy (SOCKS Proxy)
    - :notebook: address (SOCKS address): <span style="color: #B8860B">http.proxy.net</span>
    - :notebook: port (SOCKS port): <span style="color: #B8860B">3128</span>
    - :notebook: version (SOCKS host version used by proxy): <span style="color: #B8860B">v5</span>

***
#### Output for "manual.https_proxy"```shell
rougail -m firefox/ -u yaml -yf config/01/config.yml --cli.root manual.https_proxy

Note

Caption:

  • Variable
  • Default value
  • Modified value
  • ( Original default value)

Variables:

  • 📓 address (HTTPS address): https.proxy.net ← loaded from the YAML file "config/01/config.yml" ( https.proxy.net ← loaded from the YAML file "config/01/config.yml" http.proxy.net)
  • 📓 port (HTTPS port): 3128

Example 2#### config/02/config.yml

---
proxy_mode: Manual proxy configuration
manual:
  http_proxy:
    address: http.proxy.net
    port: 3128
  use_for_https: true
  https_proxy:
    address: https.proxy.net

Output```shell

rougail -m firefox/ -u yaml -yf config/02/config.yml

> [!WARNING]
> 
> - manual (Manual proxy configuration)
>   - https_proxy (HTTPS Proxy)
>     - address (HTTPS address): :bell: <span style="color: #EFBF04">cannot modify the option "address" (HTTPS address) because is frozen, it will be ignored when loading from the YAML file "config/02/config.yml"</span>

> [!NOTE]
>
> **Caption:**
> - Variable
> - <span style="color: #A52A2A">Unmodifiable variable</span>
> - <span style="color: #B8860B">Default value</span>
> - <span style="color: #006400">Modified value</span>
> - (:hourglass_flowing_sand: Original default value)

Variables:
- :notebook: proxy_mode (Configure Proxy Access to the Internet): <span style="color: #006400">Manual proxy configuration</span> ← loaded from the YAML file "config/02/config.yml" (:hourglass_flowing_sand: No proxy)
- :open_file_folder: manual (Manual proxy configuration)
  - :open_file_folder: http_proxy (HTTP Proxy)
    - :notebook: address (HTTP address): <span style="color: #006400">http.proxy.net</span> ← loaded from the YAML file "config/02/config.yml"
    - :notebook: port (HTTP Port): <span style="color: #006400">3128</span> ← loaded from the YAML file "config/02/config.yml" (:hourglass_flowing_sand: 8080)
  - :notebook: use_for_https (Also use this proxy for HTTPS): <span style="color: #006400">true</span> ← loaded from the YAML file "config/02/config.yml" (:hourglass_flowing_sand: true)
  - :open_file_folder: <span style="color: #A52A2A">https_proxy (HTTPS Proxy)</span>
    - :notebook: <span style="color: #A52A2A">address (HTTPS address)</span>: <span style="color: #B8860B">http.proxy.net</span>
    - :notebook: <span style="color: #A52A2A">port (HTTPS port)</span>: <span style="color: #B8860B">3128</span>
  - :open_file_folder: <span style="color: #A52A2A">socks_proxy (SOCKS Proxy)</span>
    - :notebook: <span style="color: #A52A2A">address (SOCKS address)</span>: <span style="color: #B8860B">http.proxy.net</span>
    - :notebook: <span style="color: #A52A2A">port (SOCKS port)</span>: <span style="color: #B8860B">3128</span>
    - :notebook: <span style="color: #A52A2A">version (SOCKS host version used by proxy)</span>: <span style="color: #B8860B">v5</span>

***
#### Output for "manual.https_proxy"```shell
rougail -m firefox/ -u yaml -yf config/02/config.yml --cli.root manual.https_proxy

Caution

  • manual (Manual proxy configuration)
    • https_proxy (HTTPS Proxy)
      • address (HTTPS address): 🛑 cannot modify the option "address" (HTTPS address) because is frozen, it has been loading from the YAML file "config/02/config.yml"