☢️ Drafts
The following directives are currently in draft state and may or may not be implemented.
Concurrency (expeditions)
The concurrency directive would be used to control how many instances of the expedition can run simultaneously.
yaml
_: Expedition
concurrency: 3
steps: []Event handlers (steps)
The dispatch directive would be used to trigger tasks with on/once directives.
A task with an on/once would not be executed naturally in the sequence, but only when the specified event is dispatched.
yaml
- on: foobar
example:
foo: bar
- example:
foo: bar
dispatch: foobarRemarks:
- This feature is inspired by Ansible's event handlers.
- But the naming
on/oncesuggests that it would not necessarily run at the end.
- But the naming
- It might makes expeditions confusing to read, as the execution order would not be linear anymore.
- The
on/oncemust be templated before all other steps ?
Asynchronous execution (steps)
The async/await directives would be used to run tasks asynchronously.
yaml
- id: foo
async: true
- id: bar
async: true
- _: Waiting for foo and bar to complete
await: [foo, bar]Parallel loops (steps)
The for.await directive would be used to run loop iterations in parallel.
yaml
- _: Say hi to each member in parallel
log: Bonjour, ${__} !
for.await: [ Gustave, Maëlle, Lune, Sciel ]