rougail-tutorials/README.md

28 KiB

Table of Contents

Summary

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

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

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

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

foo@bar:~$ rougail -v 1.1 -m firefox/ -o doc -do github

Variables

Variable                                                                                                 Description                                                                                             
proxy_mode
choice 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 basic mandatory
HTTP address.
Validator: the domain name can be an IP
manual.http_proxy.port
port standard mandatory
HTTP Port.
Default: 8080
Variable                                                                                                 Description                                                                                             
manual.use_for_https
boolean 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 basic mandatory
HTTPS address.
Validator: the domain name can be an IP
manual.https_proxy.port
port standard mandatory
HTTPS Port.
Default: 8080

User data

Example 1

config/01/config.yaml

---

Output

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

---
proxy_mode: Manual proxy configuration

Output

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

---
proxy_mode: Manual proxy configuration
manual:
  http_proxy:
    address: example.net

Output

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

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

---
proxy_mode: Manual proxy configuration
manual:
  http_proxy:
    address: example.net
    port: '3128'

Output

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

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

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