getting started -> hello world to tutorial

This commit is contained in:
gwen 2025-02-04 15:48:49 +01:00
parent 98f788ee9b
commit 543d54144b
2 changed files with 106 additions and 21 deletions

View file

@ -60,12 +60,12 @@ The YAML structure files format
We need to learn first the specifics of the YAML dictionaries file format in Rougail, as well as some templating concepts.
Here is an empty rougail dictionary YAML file
Here is an empty Rougail dictionary YAML file
.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_000/firefox/00-proxy.yml
:linenos:
:language: yaml
:caption: An empty rougail dictionnary file. It's a YAML format.
:caption: An empty Rougail dictionnary file. It's a YAML format.
:name: RougailDictionaryEmptyFile
..
@ -98,7 +98,7 @@ Here is a :term:`structure file <dictionary>` example with a variable into it:
.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_010/firefox/00-proxy.yml
:language: yaml
:caption: A rougail dictionnary file with a variable named `proxy_mode`. It's the Rougail YAML dictionary format.
:caption: A Rougail dictionnary file with a variable named `proxy_mode`. It's the Rougail YAML dictionary format.
:name: RougailDictionaryFirstVariable
..
@ -112,7 +112,7 @@ Here is the same variable with a description label:
.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_011/firefox/00-proxy.yml
:language: yaml
:caption: A rougail dictionnary file with a variable named `proxy_mode`, with a description.
:caption: A Rougail dictionnary file with a variable named `proxy_mode`, with a description.
:name: RougailDictionaryFirstVariableDescription
..
@ -124,7 +124,7 @@ The same with a default value:
.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_012/firefox/00-proxy.yml
:language: yaml
:caption: A rougail dictionnary file with a variable named `proxy_mode`, with a default value.
:caption: A Rougail dictionnary file with a variable named `proxy_mode`, with a default value.
:name: RougailDictionaryFirstVariableDefault
..
@ -147,3 +147,32 @@ family
A :term:`family` is simply a container of variables and subfamily.
.. _installation:
Installation
----------------
You just have to type this in your preferred terminal:
.. code-block:: text
pip install rougail
a better way to install the Rougail library in to do this in a virtual environment:
.. code-block:: text
python -m"venv' .venv
And, under linux or Mac:
.. code-block:: shell
./.venv/bin/activate
or, under windows:
.. code-block:: text
.venv\Scripts\activate.exe

View file

@ -6,26 +6,82 @@ Preliminaries
We will learn how to:
- create a Rougail :term:`structure description file <dictionary>`
- define a Rougail format version
- define a Rougail :term:`structure description file <dictionary>` format version
- define a Rougail :term:`variable` and set its :term:`value`
.. type-along:: Basics
.. prerequisites:: Prerequisites
Dictionary
-------------
We assume that Rougail's library is :ref:`already installed <installation>` on your computer (or in a virtual environment).
Define a Rougail :term:`structure description file <dictionary>`
.. exercise:: The folder structure
https://forge.cloud.silique.fr/stove/rougail-tutorials/src/commit/v1.1_000/firefox/00-proxy.yml
Here is the tree structure we want to have::
workplace
├── firefox
   │   ├── dictionary.yml
Here is an empty Rougail dictionnary <RougailDictionaryEmptyFile>`
- Let's make a :file:`workplace` directory, with a :file:`dict` subfolder.
- First, we wil make a :term:`dictionary`, so let's make the :file:`dictionary.yml` file
which is located in the :file:`firefox` subfolder.
- Then we will run this command
- define a variable and its default value
.. code-block:: shell
:ref:`Here is a first Rougail variable in a Rougail dictionnary <RougailDictionaryFirstVariable>`
foo@bar:~$ rougail -v 1.1 -m firefox/
which actually outputs an error:
.. raw:: html
:url: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_010/config/01/output_ro.html
..
🛑 ERRORS
┣━━ The following variables are mandatory but have no value:
┗━━ - proxy_mode
Because this variable is :term:`mandatory` and needs to be set.
FIXME : ce dico doit être mis en haut
.. type-along:: a default dictionary
An empty structure description file
The dictionary
----------------
This is an empty Rougail dictionnary
.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_000/firefox/00-proxy.yml
:language: yaml
:caption: An empty rougail dictionnary file with only the version
:name: RougailDictionaryEmptyFile
..
---
version: 1.1
.. type-along:: a dictionary with a variable
Let's define a Rougail :term:`structure description file <dictionary>` with something defined in it.
Defining a variable and its default value
----------------------------------------------
This is a first Rougail variable in a Rougail dictionnary.
.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_010/firefox/00-proxy.yml
:language: yaml
:caption: A Rougail dictionnary file with only one variable
:name: RougailDictionaryFirstVariableName
..
---
proxy_mode:
This is a Rougail variable in a Rougail dictionnary, we define a variable with a description of it.
- define a variable with a description
:ref:`Here is a Rougail variable with a description <RougailDictionaryFirstVariableDescription>`
@ -89,7 +145,7 @@ So, if :
.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_010/firefox/00-proxy.yml
:linenos:
:language: yaml
:caption: The :file:`firefox/00-proxy.yaml` rougail structure file, with no default value set.
:caption: The :file:`firefox/00-proxy.yaml` Rougail structure file, with no default value set.
:name: RougailDictionaryNoDefault
..
@ -99,7 +155,7 @@ So, if :
Then the rougail CLI will output an error :
.. code-block:: shell
:caption: A rougail Command Line Utility call with the :file:`config/01/config.yaml` rougail dictionnary file
:caption: A rougail Command Line Utility call with the :file:`config/01/config.yaml` Rougail dictionnary file
foo@bar:~$ rougail -v 1.1 -m firefox -u file -ff config/01/config.yaml
@ -127,7 +183,7 @@ Rougail waits for the `proxy_mode` configuration option's value to be set.
Variable's type
-----------------
If the `type` attribute is not set, rougail infers a `string` type for the `proxy_mode` configuration option variable type as defined in the structure file.
If the `type` attribute is not set, Rougail infers a `string` type for the `proxy_mode` configuration option variable type as defined in the structure file.
If the operator sets an option value for example with the `number` type, like this:
@ -138,13 +194,13 @@ If the operator sets an option value for example with the `number` type, like th
description: Configure Proxy Access to the Internet
type: number
Then rougail will expect a `int` or a `float` as a value for the `example_var` variable.
Then Rougail will expect a `int` or a `float` as a value for the `example_var` variable.
In our firefox use case, the real type of the `proxy_mode` variable is a `choice` type:
.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_013/firefox/00-proxy.yml
:linenos:
:language: yaml
:caption: The :file:`firefox/00-proxy.yml` rougail dictionnary file, with a default value set.
:caption: The :file:`firefox/00-proxy.yml` Rougail dictionnary file, with a default value set.
:name: RougailDictionaryChoiceTypeWitheDefault
..
@ -222,7 +278,7 @@ We have the list of the possible (authorized) values:
.. extinclude:: https://forge.cloud.silique.fr/stove/rougail-tutorials/raw/tag/v1.1_013/firefox/00-proxy.yml
:linenos:
:language: yaml
:caption: A rougail dictionnary file with a variable named `proxy_mode`, with a default value.
:caption: A Rougail dictionnary file with a variable named `proxy_mode`, with a default value.
..