2022-11-10 22:58:24 +01:00
|
|
|
# La bibliothèque Rougail
|
2021-02-14 10:12:42 +01:00
|
|
|
|
2023-10-12 08:17:30 +02:00
|
|
|
Rougail est une bibliothèque de gestion de configuration qui permet de charger simplement des variables.
|
2021-02-14 10:12:42 +01:00
|
|
|
|
2023-10-12 08:17:30 +02:00
|
|
|
Dans les exemples suivants, nous utiliserons une configuration particulière de Rougail.
|
2022-11-10 22:58:24 +01:00
|
|
|
Vous retrouverez toutes les options pour [personnaliser les répertoires utilisés](config.md).
|
2021-02-14 10:12:42 +01:00
|
|
|
|
2023-10-12 08:17:30 +02:00
|
|
|
Pour charger la configuration il faut importer la variable RougailConfig et changer les valeurs :
|
2021-02-14 10:12:42 +01:00
|
|
|
|
2022-11-10 22:58:24 +01:00
|
|
|
```python
|
|
|
|
from rougail import RougailConfig
|
2021-02-14 10:12:42 +01:00
|
|
|
|
2022-11-10 22:58:24 +01:00
|
|
|
RougailConfig['dictionaries_dir'] = ['dict']
|
2021-02-14 10:12:42 +01:00
|
|
|
```
|
|
|
|
|
2022-11-10 22:58:24 +01:00
|
|
|
## Convertisons un dictionnaire
|
|
|
|
|
2023-10-12 08:17:30 +02:00
|
|
|
Un dictionnaire est un ensemble d'instruction qui vont permettre de créer des familles et des variables.
|
2021-02-14 10:12:42 +01:00
|
|
|
|
2022-11-10 22:58:24 +01:00
|
|
|
Commençons par créer un [dictionnaire](../dictionary/rougail.md) simple.
|
2021-02-14 10:12:42 +01:00
|
|
|
|
2022-11-10 22:58:24 +01:00
|
|
|
Voici un premier dictionnaire dict/00-base.yml :
|
2021-02-14 10:12:42 +01:00
|
|
|
|
2022-11-11 15:59:26 +01:00
|
|
|
```yml
|
2023-10-12 08:17:30 +02:00
|
|
|
---
|
|
|
|
version: '1.0'
|
|
|
|
my_variable:
|
|
|
|
default: my_value
|
2021-02-14 10:12:42 +01:00
|
|
|
```
|
|
|
|
|
2023-10-12 08:17:30 +02:00
|
|
|
Puis, créons les objets [Tiramisu](https://forge.cloud.silique.fr/gnunux/tiramisu) via la script script.py suivant :
|
2021-02-14 10:12:42 +01:00
|
|
|
|
2021-02-14 18:03:15 +01:00
|
|
|
```python
|
2022-11-10 22:58:24 +01:00
|
|
|
from rougail import Rougail, RougailConfig
|
2021-02-14 10:12:42 +01:00
|
|
|
|
2023-10-12 08:17:30 +02:00
|
|
|
RougailConfig['dictionaries_dir'] = ['dict']
|
|
|
|
rougail = Rougail()
|
|
|
|
config = rougail.get_config()
|
|
|
|
print(config.value.get())
|
2021-02-14 10:12:42 +01:00
|
|
|
```
|
|
|
|
|
2022-11-10 22:58:24 +01:00
|
|
|
Exécution le script :
|
2021-02-14 10:12:42 +01:00
|
|
|
|
2022-11-11 15:59:26 +01:00
|
|
|
```sh
|
2022-11-10 22:58:24 +01:00
|
|
|
$ python3 script.py
|
|
|
|
{'rougail.my_variable': 'my_value'}
|
2021-02-14 10:12:42 +01:00
|
|
|
```
|
|
|
|
|
2022-11-10 22:58:24 +01:00
|
|
|
## Convertisons un dictionnaire extra
|
|
|
|
|
|
|
|
L'espace de nommage par défaut des variables et familles est "rougail". Il est possible de définir d'autres espaces de nom.
|
|
|
|
Ces espaces de nom additionnels s'appelle des "[extras](../dictionary/extra.md)".
|
|
|
|
|
|
|
|
Les espaces de nom additionnels se définissent lors de la configuration.
|
|
|
|
|
|
|
|
Par exemple, voici comment ajouter une espace de nom "example" :
|
2021-02-14 10:12:42 +01:00
|
|
|
|
2022-11-10 22:58:24 +01:00
|
|
|
```python
|
|
|
|
RougailConfig['extra_dictionaries']['example'] = ['extras/']
|
2021-02-14 10:12:42 +01:00
|
|
|
```
|
|
|
|
|
2022-11-10 22:58:24 +01:00
|
|
|
Ensuite créons un dictionnaire extra extras/00-base.yml :
|
|
|
|
|
2022-11-11 15:59:26 +01:00
|
|
|
```yml
|
2023-10-12 08:17:30 +02:00
|
|
|
---
|
|
|
|
version: '1.0'
|
|
|
|
my_variable_extra:
|
|
|
|
default: my_value_extra
|
2021-02-14 10:12:42 +01:00
|
|
|
```
|
|
|
|
|
2023-10-12 08:17:30 +02:00
|
|
|
Puis, créons les objets [Tiramisu](https://forge.cloud.silique.fr/gnunux/tiramisu) via la script script.py suivant :
|
2021-02-14 10:12:42 +01:00
|
|
|
|
2021-02-14 18:03:15 +01:00
|
|
|
```python
|
2022-11-10 22:58:24 +01:00
|
|
|
from rougail import Rougail, RougailConfig
|
2021-02-14 10:12:42 +01:00
|
|
|
|
2023-10-12 08:17:30 +02:00
|
|
|
RougailConfig['dictionaries_dir'] = ['dict']
|
|
|
|
RougailConfig['extra_dictionaries']['example'] = ['extras/']
|
|
|
|
rougail = Rougail()
|
|
|
|
config = rougail.get_config()
|
|
|
|
print(config.value.dict())
|
2021-02-14 10:12:42 +01:00
|
|
|
```
|
|
|
|
|
2022-11-10 22:58:24 +01:00
|
|
|
Exécution le script :
|
2021-02-14 18:03:15 +01:00
|
|
|
|
2022-11-10 22:58:24 +01:00
|
|
|
```python
|
|
|
|
$ python3 script.py
|
|
|
|
{'rougail.my_variable': 'my_value', 'example.my_variable_extra': 'my_value_extra'}
|
2021-02-14 18:03:15 +01:00
|
|
|
```
|
2021-02-14 10:12:42 +01:00
|
|
|
|
|
|
|
## Créons une fonction personnalisé
|
|
|
|
|
2023-10-12 08:17:30 +02:00
|
|
|
Nous créons le dictionnaire complémentaire dict/01-function.yml pour que la variable "my_variable_jinja" soit [calculée](fill/README.md) :
|
2021-02-14 10:12:42 +01:00
|
|
|
|
2022-11-10 22:58:24 +01:00
|
|
|
```yml
|
2023-10-12 08:17:30 +02:00
|
|
|
---
|
|
|
|
version: '1.0'
|
|
|
|
my_variable_jinja:
|
|
|
|
type: "string"
|
|
|
|
default:
|
|
|
|
type: jinja
|
|
|
|
jinja: "{{ return_no() }}"
|
2021-02-14 10:12:42 +01:00
|
|
|
```
|
|
|
|
|
2022-11-10 22:58:24 +01:00
|
|
|
Puis créons la fonction "return_no" dans functions.py :
|
2021-02-14 10:12:42 +01:00
|
|
|
|
2021-02-14 18:03:15 +01:00
|
|
|
```python
|
2021-02-14 10:12:42 +01:00
|
|
|
def return_no():
|
|
|
|
return 'no'
|
|
|
|
```
|
|
|
|
|
2023-10-12 08:17:30 +02:00
|
|
|
Puis, créons les objets [Tiramisu](https://forge.cloud.silique.fr/gnunux/tiramisu) via la script script.py suivant :
|
2021-02-14 10:12:42 +01:00
|
|
|
|
2023-10-12 08:17:30 +02:00
|
|
|
```python
|
|
|
|
from rougail import Rougail, RougailConfig
|
2021-02-14 10:12:42 +01:00
|
|
|
|
2023-10-12 08:17:30 +02:00
|
|
|
RougailConfig['dictionaries_dir'] = ['dict']
|
|
|
|
RougailConfig['extra_dictionaries']['example'] = ['extras/']
|
|
|
|
RougailConfig['functions_file'] = 'functions.py'
|
|
|
|
rougail = Rougail()
|
|
|
|
config = rougail.get_config()
|
|
|
|
print(config.value.dict())
|
2021-02-14 10:12:42 +01:00
|
|
|
```
|
|
|
|
|
2023-10-12 08:17:30 +02:00
|
|
|
Exécution le script :
|
2023-01-07 17:11:25 +01:00
|
|
|
|
|
|
|
```python
|
2023-10-12 08:17:30 +02:00
|
|
|
$ python3 script.py
|
|
|
|
{'rougail.my_variable': 'my_value', 'rougail.my_variable_jinja': 'no', 'example.my_variable_extra': 'my_value_extra'}
|
2023-01-07 17:11:25 +01:00
|
|
|
```
|
|
|
|
|
2023-10-12 08:17:30 +02:00
|
|
|
La valeur de la variable `my_variable_extra` est bien calculé à partir de la fonction `return_no`.
|