Skip to main content

Module workflow

Module workflow 

Source
Expand description

The repository’s own workflows as command-graph nodes.

A workflow is a recipe the repository declares for a person to run and that no program here implements — building the site, running the suite, publishing. The runner already describes them: crate::environment::workflows reads just --dump --dump-format json and turns it into a typed catalogue, and this is a second reading of that catalogue, not a second parser.

§The bridge is not a workflow

Once the graph projects the two programs’ commands into recipes, the runner reports those recipes too — and reading them back as workflows would produce a node whose execution is a recipe whose execution is that node. That is the cycle this design exists to forbid, and it is closed by construction: contribute is given the set of names the graph projects, and a recipe with such a name is the graph’s own bridge and is not a declaration of anything.

§What a workflow’s effect is

It is not inferred from the name, the group or the body. A recipe is arbitrary shell, and a guess about what arbitrary shell does is exactly the kind of thing that is right until the day it matters. A recipe the runner marks as needing confirmation is destructive, because that is what the marker means; every other workflow is read as a repository mutation, which is the strongest ordinary class and therefore the reading that keeps an unclassified workflow off every machine surface.

Structs§

Contribution
What the read produced.

Constants§

DECLARATION
The file a projection shows as the declaration of a workflow.

Functions§

contribute
Read the declared workflows, excluding the recipes the graph itself projects.