suite.rc
#!jinja2
{%- set ROCKET_NUMBER = 30 %}
{%- set ROCKET_SOUNDS = ["BANG", "WHOOSH"] %}
[cylc]
UTC mode = True # Ignore DST
[scheduling]
[[dependencies]]
graph = """
start => \
{%- for num in range(ROCKET_NUMBER) %}
{%- set num_label = '%02d' % num %}
{%- if num <= ROCKET_NUMBER / 2 %}
ignite_rocket_{{ num_label }} => \
{%- elif num == ROCKET_NUMBER - 1 %}
ignite_rocket_{{ num_label }}
{%- else %}
ignite_rocket_{{ num_label }} & \
{%- endif %}
{%- endfor %}
{%- for num in range(ROCKET_NUMBER) %}
{%- set num_label = '%02d' % num %}
ignite_rocket_{{ num_label }} => detonate_rocket_{{ num_label }}
{%- endfor %}
DETONATE:finish-all => stop
"""
[runtime]
[[root]]
[[[remote]]]
host = $ROSE_ORIG_HOST
[[DETONATE]]
script = rose task-run
[[[environment]]]
ROSE_TASK_APP = detonate
[[IGNITE]]
script = sleep $((RANDOM % 2))
{%- for num in range(ROCKET_NUMBER) %}
{%- set num_label = '%02d' % num %}
[[detonate_rocket_{{ num_label }}]]
inherit = DETONATE
[[[environment]]]
COLOUR_CODE = {{ num % 5 + 1 }}
SOUND = {{ ROCKET_SOUNDS[num % 2] }}
{%- endfor %}
{%- for num in range(ROCKET_NUMBER) %}
{%- set num_label = '%02d' % num %}
[[ignite_rocket_{{ num_label }}]]
inherit = IGNITE
{%- endfor %}
[[start]]
[[stop]]
script = """
sleep 2 && printf '\033[2K' > $(ls -drt -1 /dev/pts/* | tail -1)
"""