--- gitea: none include_toc: true --- # Summary - [[tutorial 001] An empty file](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_001/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_001~1..v1.1_001)) - [[tutorial 002] A first variable](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_002/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_002~1..v1.1_002)) - [[tutorial 003] A first variable](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_003/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_003~1..v1.1_003)) - [[tutorial 004] The variable description](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_004/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_004~1..v1.1_004)) - [[tutorial 005] A default value](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_005/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_005~1..v1.1_005)) - [[tutorial 006] A variable with type choice](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_006/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_006~1..v1.1_006)) - [[tutorial 007] Choice type is optional](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_007/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_007~1..v1.1_007)) - [[tutorial 010] A family](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_010/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_010~1..v1.1_010)) - [[tutorial 011] Conditional desactived family](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_011/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_011~1..v1.1_011)) - [[tutorial 012] Conditional desactived family](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_012/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_012~1..v1.1_012)) - [[tutorial 013] A sub family](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_013/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_013~1..v1.1_013)) - [[tutorial 014] Family in "shorthand" mode](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_014/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_014~1..v1.1_014)) - [[tutorial 015] Family in "shorthand" mode](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_015/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_015~1..v1.1_015)) - [[tutorial 016] Family in "shorthand" mode](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_016/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_016~1..v1.1_016)) - [[tutorial 017] Family in "shorthand" mode](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_017/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_017~1..v1.1_017)) - [[tutorial 018] Family in "shorthand" mode](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_018/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_018~1..v1.1_018)) - [[tutorial 020] A boolean variable](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_020/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_020~1..v1.1_020)) - [[tutorial 021] Bases type is optional if default value](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_021/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_021~1..v1.1_021)) - [[tutorial 022] A variable in "shorthand" mode](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_022/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_022~1..v1.1_022)) - [[tutorial 023] Conditional hidden family and calculated default value](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_023/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_023~1..v1.1_023)) - [[tutorial 024] Conditional hidden family and calculated default value](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_024/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_024~1..v1.1_024)) # Description Firefox Proxy setting Conditional hidden family and calculated default value Add a sub family "https_proxy" which will be hidden if "use_for_https" is True. Hidden means that we cannot change value, but we can access to it in read only mode. Inside, we add two variable with calculated default value (with variable type). So, if user set "use_for_https" to True, the default values of HTTPS configuration will be a copy of HTTP values. The use can change HTTPS values if needed. If user set "use_for_https" to False, the default values of HTTPS configuration will only be a copy of HTTP values. # Structure ## firefox/00-proxy.yml ```yml --- proxy_mode: description: Configure Proxy Access to the Internet choices: - No proxy - Auto-detect proxy settings for this network - Use system proxy settings - Manual proxy configuration - Automatic proxy configuration URL default: No proxy ``` ## firefox/10-manual.yml ```yml --- manual: description: Manual proxy configuration disabled: variable: _.proxy_mode when_not: 'Manual proxy configuration' http_proxy: # HTTP Proxy address: description: HTTP address type: domainname params: allow_ip: true port: description: HTTP Port type: port default: 8080 ``` ## firefox/20-manual.yml ```yml --- manual: use_for_https: true # Also use this proxy for HTTPS https_proxy: description: HTTPS Proxy hidden: variable: manual.use_for_https address: description: HTTPS address type: domainname params: allow_ip: true port: description: HTTPS Port type: port default: 8080 ``` ## Generated documentation ```console foo@bar:~$ rougail -v 1.1 -m firefox/ -o doc -do github ``` ### Variables | Variable                                                                                                 | Description                                                                                              | |------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | **proxy_mode**
[`choice`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | Configure Proxy Access to the Internet.
**Choices**:
- No proxy ← (default)
- Auto-detect proxy settings for this network
- Use system proxy settings
- Manual proxy configuration
- Automatic proxy configuration URL | #### Manual proxy configuration `basic` _`disabled`_ **Disabled**: when the variable "proxy_mode" hasn't the value "Manual proxy configuration". ##### HTTP Proxy `basic` | Variable                                                                                                 | Description                                                                                              | |------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | **manual.http_proxy.address**
[`domainname`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `basic` `mandatory` | HTTP address.
**Validator**: the domain name can be an IP | | **manual.http_proxy.port**
[`port`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | HTTP Port.
**Default**: 8080 | | Variable                                                                                                 | Description                                                                                              | |------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | **manual.use_for_https**
[`boolean`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | Also use this proxy for HTTPS.
**Default**: True | ##### HTTPS Proxy `basic` _`hidden`_ **Hidden**: manual.use_for_https. | Variable                                                                                                 | Description                                                                                              | |------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | **manual.https_proxy.address**
[`domainname`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `basic` `mandatory` | HTTPS address.
**Validator**: the domain name can be an IP | | **manual.https_proxy.port**
[`port`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | HTTPS Port.
**Default**: 8080 | # User data ## Example 1 ### config/01/config.yaml ```yml --- ``` ### Output ```console foo@bar:~$ rougail -v 1.1 -m firefox -u file -ff config/01/config.yaml ```
╭────────────────────────── Caption ──────────────────────────╮
│ Variable                           Default value            │
│ Undocumented variable              Modified value           │
│ Undocumented but modified variable (Original default value) │
│ Unmodifiable variable                                       │
╰─────────────────────────────────────────────────────────────╯
Variables:
┗━━ 📓 proxy_mode: No proxy
## Example 2 ### config/02/config.yaml ```yml --- proxy_mode: Manual proxy configuration ``` ### Output ```console foo@bar:~$ rougail -v 1.1 -m firefox -u file -ff config/02/config.yaml ```
🛑 ERRORS
┣━━ The following variables are mandatory but have no value:
┗━━   - manual.http_proxy.address (HTTP address)
## Example 3 ### config/03/config.yaml ```yml --- proxy_mode: Manual proxy configuration manual: http_proxy: address: example.net ``` ### Output ```console foo@bar:~$ rougail -v 1.1 -m firefox -u file -ff config/03/config.yaml ```
🛑 ERRORS
┣━━ The following variables are inaccessible but are empty and mandatory :
┗━━   - manual.https_proxy.address (HTTPS address)
### Output in read write mode ```console foo@bar:~$ rougail -v 1.1 -m firefox -u file -ff config/03/config.yaml --exporter.read_write ```
🛑 ERRORS
┣━━ The following variables are inaccessible but are empty and mandatory :
┗━━   - manual.https_proxy.address (HTTPS address)
## Example 4 ### config/04/config.yaml ```yml --- proxy_mode: Manual proxy configuration manual: http_proxy: address: example.net port: '3128' ``` ### Output ```console foo@bar:~$ rougail -v 1.1 -m firefox -u file -ff config/04/config.yaml ```
🛑 ERRORS
┣━━ The following variables are inaccessible but are empty and mandatory :
┗━━   - manual.https_proxy.address (HTTPS address)
## Example 5 ### config/05/config.yaml ```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 ``` ### Description If "use_for_https" is false, HTTPS variables are visible in read only mode and in read write mode. ### Output ```console foo@bar:~$ rougail -v 1.1 -m firefox -u file -ff config/05/config.yaml ```
╭────────────────────────── Caption ──────────────────────────╮
│ Variable                           Default value            │
│ Undocumented variable              Modified value           │
│ Undocumented but modified variable (Original default value) │
╰─────────────────────────────────────────────────────────────╯
Variables:
┣━━ 📓 proxy_mode: Manual proxy configuration (No proxy)
┗━━ 📂 manual
    ┣━━ 📂 http_proxy
    ┣━━ 📓 address: http.proxy.net
    ┗━━ 📓 port: 3128 (8080)
    ┣━━ 📓 use_for_https: False (True)
    ┗━━ 📂 https_proxy
        ┣━━ 📓 address: https.proxy.net
        ┗━━ 📓 port: 8080