= Step - `tool.runbot.step`

Une `step` représente une étape du `runbot`. Elles seront jouée les unes après les autres.
Plusieurs attributs de configuration sont possibles.

== Son nom

Le nom de la `step` se trouve directement dans la déclaration de la section.
En théorie, tous les formats sont acceptés. Mais il ne faut pas non plus être fantaisiste.

NOTE: Si vous voulez mettre des caractères spéciaux ou des espaces, vous devez alors mettre des `"`.

.Nom de `step` valide
[,toml]
----
[tool.runbot.step.step1] # <1>
[tool.runbot.step."My Awsome Step"] # <1>
[tool.runbot.step."Step with 🔥"] # <1>
----

== L'action

Une `step` peut faire l'une des actions suivantes :

* Installer (`install`) un ou plusieurs modules.
* Tester (`tests`) un ou plusieurs modules.

Vous pouvez paramétrer l'action via l'attribut `action` de chaque `step`.

[[default_act_by_name]]
[caption=Par convention]
[IMPORTANT]
--
Si votre `step` s'appelle `install` ou `warmup`, alors l'action sera forcément `install`.

.pyproject.toml
[,toml]
----
[tool.runbot.step.<install | warmup>] # <1>
modules = ["sale"]

##### Equivalent à
[tool.runbot.step.<install | warmup>] # <1>
modules = ["sale"]
action = "install" # <2>
----
<1> Nom utilisant la convention
<2> L'action sera alors
--

NOTE: Elles sont exécutées dans l'ordre de déclaration dans le fichier `pyproject.toml`

.pyproject.toml
[,toml]
----
[tool.runbot]
modules = ["sale"]

[tool.runbot.step.step2]
name = "Step number 2"

[tool.runbot.step.step1]
name = "Step number 1"

----


.output
[,shell]
----
$ mangono-runbot diag
...blabla
                                         Steps
┏━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Step    ┃ Module ┃ Run tests ┃ Activate Coverage ┃ Tags to test ┃ Logger filter ┃
┡━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ step2   │ sale   │ TESTS     │ ✔                 │              │               │ <1>
│ step1   │ sale   │ TESTS     │ ✔                 │              │               │ <2>
└─────────┴────────┴───────────┴───────────────────┴──────────────┴───────────────┘
----
<1> C'est bien la `step` "step2" qui sera exécutée en première
<2> Puis la `step` "step1"



== Champs possibles des étapes

Dans chaque `step` vous pouvez préciser les attributs suivants :

|===
| name | Type Toml | Par défaut

| modules | https://toml.io/en/v1.0.0#array[liste] de https://toml.io/en/v1.0.0#string[string] | *Obligatoire* ou ceux de la xref:config_global.adoc[]
| action | `"tests"` ou `"install"` | `"tests"`
| test_tags | https://toml.io/en/v1.0.0#array[liste] de https://toml.io/en/v1.0.0#string[string] | `[]`
| coverage | https://toml.io/en/v1.0.0#boolean[boolean] | `true`
| log_filters | https://toml.io/en/v1.0.0#array-of-tables[liste de Log Filter] | `[]`
|===
