= 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 ce trouve directement de la déclaration de la section.
En theorie tous les formats sont accepté, mais il ne faut pas non plus être fantaisiste.

NOTE: Si vous voulez mettre des caractere spéciiaux 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 1 actions, soit installer un ou plusieurs module, soit tester un ou plisieurs module.
Vous pouverz 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] | `[]`
|===