---
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
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