Skip to content

☢️ 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: foobar

Remarks:

  • This feature is inspired by Ansible's event handlers.
    • But the naming on/once suggests that it would not necessarily run at the end.
  • It might makes expeditions confusing to read, as the execution order would not be linear anymore.
  • The on/once must 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 ]

Released under the MIT License.