[tutorial v1.1_114] xxx (config and doc)

This commit is contained in:
egarette@silique.fr 2025-12-02 16:19:29 +01:00
parent ff9adfbaf4
commit e670e92f7f
2 changed files with 150 additions and 40 deletions

164
README.md
View file

@ -1,9 +1,9 @@
- [Summary](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/branch/1.1/README.md)
- [[tutorial v1.1_112] xxx](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_112/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_112~1..v1.1_112))
- [[tutorial v1.1_113] xxx](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_113/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_113~1..v1.1_113))
# [tutorial v1.1_113] xxx
# [tutorial v1.1_114] xxx
[View the diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_113~1..v1.1_113)
[View the diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_114~1..v1.1_114)
[Read the documentation](https://pedago.gwenaelremond.fr/bribes/rougail/tutorial/calculation.html#xxx)
@ -31,7 +31,7 @@ pip install rougail-cli rougail-output-exporter rougail-output-doc rougail-user-
Then switch to the tutorial page:
```shell
git switch --detach v1.1_113
git switch --detach v1.1_114
```
## Structure
@ -39,19 +39,19 @@ git switch --detach v1.1_113
<p>
<a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_113/./">.</a><br/>
├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_113/./firefox/">firefox</a><br/>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_113/./firefox/00-proxy.yml">00-proxy.yml</a><br/>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_113/./firefox/10-manual.yml">10-manual.yml</a><br/>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_113/./firefox/20-manual.yml">20-manual.yml</a><br/>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_113/./firefox/30-auto.yml">30-auto.yml</a><br/>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_113/./firefox/40-no_proxy.yml">40-no_proxy.yml</a><br/>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_113/./firefox/50-prompt_authentication.yml">50-prompt_authentication.yml</a><br/>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_113/./firefox/55-proxy_dns_socks5.yml">55-proxy_dns_socks5.yml</a><br/>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_113/./firefox/60-dns_over_https.yml">60-dns_over_https.yml</a><br/>
│   └── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_113/./firefox/empty.yml">empty.yml</a><br/>
└── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_113/./foxyproxy/">foxyproxy</a><br/>
    └── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_113/./foxyproxy/00-foxyproxy.yml">00-foxyproxy.yml</a><br/>
<a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_114/./">.</a><br/>
├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_114/./firefox/">firefox</a><br/>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_114/./firefox/00-proxy.yml">00-proxy.yml</a><br/>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_114/./firefox/10-manual.yml">10-manual.yml</a><br/>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_114/./firefox/20-manual.yml">20-manual.yml</a><br/>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_114/./firefox/30-auto.yml">30-auto.yml</a><br/>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_114/./firefox/40-no_proxy.yml">40-no_proxy.yml</a><br/>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_114/./firefox/50-prompt_authentication.yml">50-prompt_authentication.yml</a><br/>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_114/./firefox/55-proxy_dns_socks5.yml">55-proxy_dns_socks5.yml</a><br/>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_114/./firefox/60-dns_over_https.yml">60-dns_over_https.yml</a><br/>
│   └── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_114/./firefox/empty.yml">empty.yml</a><br/>
└── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_114/./foxyproxy/">foxyproxy</a><br/>
    └── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_114/./foxyproxy/00-foxyproxy.yml">00-foxyproxy.yml</a><br/>
<br/><br/></p>
Contents of the foxyproxy/00-foxyproxy.yml file
@ -94,6 +94,107 @@ proxies:
{%- endfor -%}
description: random color value
auto_save: true
address:
description: IP address, DNS name, server name
type: domainname
params:
allow_ip: true
allow_without_dot: true
default:
jinja: >-
{% if firefox.manual.http_proxy.address is not propertyerror %}
{{ firefox.manual.http_proxy.address }}
{% endif %}
description: copy HTTP address if proxy is not "Manual"
disabled:
jinja: |-
{% if _.type not in ['HTTP', 'HTTPS/SSL', 'SOCKS4', 'SOCKS5'] %}
disabled
{% endif %}
description: |-
if type not in:
- HTTP
- HTTPS/SSL
- SOCKS4
- SOCKS5
port:
description: Port
type: port
default:
jinja: >-
{% if firefox.manual.http_proxy.port is not propertyerror %}
{{ firefox.manual.http_proxy.port }}
{% endif %}
description: copy HTTP port if proxy is not "Manual"
disabled:
jinja: |-
{% if _.type not in ['HTTP', 'HTTPS/SSL', 'SOCKS4', 'SOCKS5'] %}
disabled
{% endif %}
description: |-
if type not in:
- HTTP
- HTTPS/SSL
- SOCKS4
- SOCKS5
username:
description: Username
type: unix_user
mandatory:
jinja: |-
{% if _.password is not propertyerror and _.password %}
username is mandatory
{% endif %}
description: if a password is set
disabled:
jinja: |-
{% if _.type not in ['HTTP', 'HTTPS/SSL', 'SOCKS4', 'SOCKS5'] %}
disabled
{% endif %}
description: |-
if type not in:
- HTTP
- HTTPS/SSL
- SOCKS4
- SOCKS5
password:
description: Password
type: secret
mandatory: false
disabled:
jinja: |-
{% if _.type not in ['HTTP', 'HTTPS/SSL', 'SOCKS4', 'SOCKS5'] %}
disabled
{% endif %}
description: |-
if type not in:
- HTTP
- HTTPS/SSL
- SOCKS4
- SOCKS5
url:
description: URL
type: web_address
default:
jinja: >-
{% if firefox.auto is not propertyerror %}
{{ firefox.auto }}
{% endif %}
description: copy HTTP address if proxy is "Auto"
disabled:
jinja: |-
{% if _.type not in ['PAC URL', 'WPAD'] %}
proxy does not need url
{% endif %}
description: |-
if type is not in:
- PAC URL
- WPAD
...
```
@ -192,22 +293,31 @@ rougail -m firefox/ -s Firefox -xn FoxyProxy -xd 0 foxyproxy/ --modes_level basi
> **Path**: foxyproxy.proxies\
> `basic`
| Variable | Description |
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **<a id="foxyproxy.proxies.title" name="foxyproxy.proxies.title">foxyproxy.proxies.title</a>**<br/>[`string`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `multiple` `standard` `unique` | Title or Description. |
| **<a id="foxyproxy.proxies.type" name="foxyproxy.proxies.type">foxyproxy.proxies.type</a>**<br/>[`choice`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | Proxy Type.<br/>**Choices**: <br/>&nbsp;HTTP<br/>&nbsp;HTTPS/SSL<br/>&nbsp;SOCKS4<br/>&nbsp;SOCKS5<br/>&nbsp;PAC URL<br/>&nbsp;WPAD<br/>&nbsp;System (use system settings)<br/>&nbsp;Direct (no proxy) **← (default)** |
| **<a id="foxyproxy.proxies.color" name="foxyproxy.proxies.color">foxyproxy.proxies.color</a>**<br/>[`regexp`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `basic` `mandatory` `auto modified` | Color.<br/>**Validator**: text based with regular expressions "^#(?:[0-9a-f]{3}){1,2}$"<br/>**Default**: random color value |
| Variable | Description |
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **<a id="foxyproxy.proxies.title" name="foxyproxy.proxies.title">foxyproxy.proxies.title</a>**<br/>[`string`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `multiple` `standard` `unique` | Title or Description. |
| **<a id="foxyproxy.proxies.type" name="foxyproxy.proxies.type">foxyproxy.proxies.type</a>**<br/>[`choice`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | Proxy Type.<br/>**Choices**: <br/>&nbsp;HTTP<br/>&nbsp;HTTPS/SSL<br/>&nbsp;SOCKS4<br/>&nbsp;SOCKS5<br/>&nbsp;PAC URL<br/>&nbsp;WPAD<br/>&nbsp;System (use system settings)<br/>&nbsp;Direct (no proxy) **← (default)** |
| **<a id="foxyproxy.proxies.color" name="foxyproxy.proxies.color">foxyproxy.proxies.color</a>**<br/>[`regexp`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `basic` `mandatory` `auto modified` | Color.<br/>**Validator**: text based with regular expressions "^#(?:[0-9a-f]{3}){1,2}$"<br/>**Default**: random color value |
| **<a id="foxyproxy.proxies.address" name="foxyproxy.proxies.address">foxyproxy.proxies.address</a>**<br/>[`domainname`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` *`disabled`* | IP address, DNS name, server name.<br/>**Validators**: <br/>&nbsp;type domainname<br/>&nbsp;the domain name can be a hostname<br/>&nbsp;the domain name can be an IP<br/>**Default**: copy HTTP address if proxy is not "Manual"<br/>**Disabled**: if type not in:<br/>- HTTP<br/>- HTTPS/SSL<br/>- SOCKS4<br/>- SOCKS5 |
| **<a id="foxyproxy.proxies.port" name="foxyproxy.proxies.port">foxyproxy.proxies.port</a>**<br/>[`port`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` *`disabled`* | 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**: copy HTTP port if proxy is not "Manual"<br/>**Disabled**: if type not in:<br/>- HTTP<br/>- HTTPS/SSL<br/>- SOCKS4<br/>- SOCKS5 |
| **<a id="foxyproxy.proxies.username" name="foxyproxy.proxies.username">foxyproxy.proxies.username</a>**<br/>[`UNIX user`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` *`mandatory`* *`disabled`* | Username.<br/>**Mandatory**: if a password is set<br/>**Disabled**: if type not in:<br/>- HTTP<br/>- HTTPS/SSL<br/>- SOCKS4<br/>- SOCKS5 |
| **<a id="foxyproxy.proxies.password" name="foxyproxy.proxies.password">foxyproxy.proxies.password</a>**<br/>[`secret`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` *`disabled`* | Password.<br/>**Disabled**: if type not in:<br/>- HTTP<br/>- HTTPS/SSL<br/>- SOCKS4<br/>- SOCKS5 |
| **<a id="foxyproxy.proxies.url" name="foxyproxy.proxies.url">foxyproxy.proxies.url</a>**<br/>[`web address`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` *`disabled`* | URL.<br/>**Validators**: <br/>&nbsp;well-known ports (1 to 1023) are allowed<br/>&nbsp;registred ports (1024 to 49151) are allowed<br/>&nbsp;type domainname<br/>&nbsp;the domain name can be a hostname<br/>**Default**: copy HTTP address if proxy is "Auto"<br/>**Disabled**: if type is not in:<br/>- PAC URL<br/>- WPAD |
### Let's generate the changelog
```shell
rougail -m firefox/ -s Firefox -xn FoxyProxy -xd 0 foxyproxy/ --modes_level basic standard advanced -o doc --doc.contents changelog
```
#### New variable
#### New variables
| Variable | Description |
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **<a id="foxyproxy.proxies.type" name="foxyproxy.proxies.type">foxyproxy.proxies.type</a>**<br/>[`choice`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` | Proxy Type.<br/>**Choices**: <br/>&nbsp;HTTP<br/>&nbsp;HTTPS/SSL<br/>&nbsp;SOCKS4<br/>&nbsp;SOCKS5<br/>&nbsp;PAC URL<br/>&nbsp;WPAD<br/>&nbsp;System (use system settings)<br/>&nbsp;Direct (no proxy) **← (default)** |
| Variable | Description |
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **<a id="foxyproxy.proxies.address" name="foxyproxy.proxies.address">foxyproxy.proxies.address</a>**<br/>[`domainname`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` *`disabled`* | IP address, DNS name, server name.<br/>**Validators**: <br/>&nbsp;type domainname<br/>&nbsp;the domain name can be a hostname<br/>&nbsp;the domain name can be an IP<br/>**Default**: copy HTTP address if proxy is not "Manual"<br/>**Disabled**: if type not in:<br/>- HTTP<br/>- HTTPS/SSL<br/>- SOCKS4<br/>- SOCKS5 |
| **<a id="foxyproxy.proxies.port" name="foxyproxy.proxies.port">foxyproxy.proxies.port</a>**<br/>[`port`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` *`disabled`* | 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**: copy HTTP port if proxy is not "Manual"<br/>**Disabled**: if type not in:<br/>- HTTP<br/>- HTTPS/SSL<br/>- SOCKS4<br/>- SOCKS5 |
| **<a id="foxyproxy.proxies.username" name="foxyproxy.proxies.username">foxyproxy.proxies.username</a>**<br/>[`UNIX user`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` *`mandatory`* *`disabled`* | Username.<br/>**Mandatory**: if a password is set<br/>**Disabled**: if type not in:<br/>- HTTP<br/>- HTTPS/SSL<br/>- SOCKS4<br/>- SOCKS5 |
| **<a id="foxyproxy.proxies.password" name="foxyproxy.proxies.password">foxyproxy.proxies.password</a>**<br/>[`secret`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` *`disabled`* | Password.<br/>**Disabled**: if type not in:<br/>- HTTP<br/>- HTTPS/SSL<br/>- SOCKS4<br/>- SOCKS5 |
| **<a id="foxyproxy.proxies.url" name="foxyproxy.proxies.url">foxyproxy.proxies.url</a>**<br/>[`web address`](https://rougail.readthedocs.io/en/latest/variable.html#variables-types) `standard` `mandatory` *`disabled`* | URL.<br/>**Validators**: <br/>&nbsp;well-known ports (1 to 1023) are allowed<br/>&nbsp;registred ports (1024 to 49151) are allowed<br/>&nbsp;type domainname<br/>&nbsp;the domain name can be a hostname<br/>**Default**: copy HTTP address if proxy is "Auto"<br/>**Disabled**: if type is not in:<br/>- PAC URL<br/>- WPAD |
#### Modified variable
@ -244,4 +354,4 @@ Variables:
</pre>
- [[tutorial v1.1_114] xxx](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_114/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_114~1..v1.1_114))
- [[tutorial v1.1_120] xxx](https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_120/README.md) ([diff](https://forge.cloud.silique.fr/stove/rougail-tutorials/compare/v1.1_120~1..v1.1_120))

View file

@ -25,19 +25,19 @@
</head>
<body>
<h1>Directory Tree</h1><p>
<a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_113/./">.</a><br>
├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_113/./firefox/">firefox</a><br>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_113/./firefox/00-proxy.yml">00-proxy.yml</a><br>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_113/./firefox/10-manual.yml">10-manual.yml</a><br>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_113/./firefox/20-manual.yml">20-manual.yml</a><br>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_113/./firefox/30-auto.yml">30-auto.yml</a><br>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_113/./firefox/40-no_proxy.yml">40-no_proxy.yml</a><br>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_113/./firefox/50-prompt_authentication.yml">50-prompt_authentication.yml</a><br>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_113/./firefox/55-proxy_dns_socks5.yml">55-proxy_dns_socks5.yml</a><br>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_113/./firefox/60-dns_over_https.yml">60-dns_over_https.yml</a><br>
│   └── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_113/./firefox/empty.yml">empty.yml</a><br>
└── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_113/./foxyproxy/">foxyproxy</a><br>
&nbsp;&nbsp;&nbsp; └── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_113/./foxyproxy/00-foxyproxy.yml">00-foxyproxy.yml</a><br>
<a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_114/./">.</a><br>
├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_114/./firefox/">firefox</a><br>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_114/./firefox/00-proxy.yml">00-proxy.yml</a><br>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_114/./firefox/10-manual.yml">10-manual.yml</a><br>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_114/./firefox/20-manual.yml">20-manual.yml</a><br>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_114/./firefox/30-auto.yml">30-auto.yml</a><br>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_114/./firefox/40-no_proxy.yml">40-no_proxy.yml</a><br>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_114/./firefox/50-prompt_authentication.yml">50-prompt_authentication.yml</a><br>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_114/./firefox/55-proxy_dns_socks5.yml">55-proxy_dns_socks5.yml</a><br>
│   ├── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_114/./firefox/60-dns_over_https.yml">60-dns_over_https.yml</a><br>
│   └── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_114/./firefox/empty.yml">empty.yml</a><br>
└── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_114/./foxyproxy/">foxyproxy</a><br>
&nbsp;&nbsp;&nbsp; └── <a href="https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_114/./foxyproxy/00-foxyproxy.yml">00-foxyproxy.yml</a><br>
<br><br><p>
3 directories, 10 files