Command Keys
This tutorial walks you through using command keys.
Command keys allow you to specify and run different commands for a Rose app.
They work just like the default command for an app but have to be specified explicitly as an option of rose task-run.
Example
Create a new Rose suite configuration called command-keys
:
mkdir -p ~/cylc-src/command-keys
cd ~/cylc-src/command-keys
Create a blank rose-suite.conf
and a flow.cylc
file that
looks like this:
[scheduler]
UTC mode = True # Ignore DST
[scheduling]
[[graph]]
R1 = gather_ingredients => breadmaker
[runtime]
[[gather_ingredients]]
script = sleep 10; echo 'Done'
[[breadmaker]]
script = rose task-run
In your suite directory create an app
directory.
In the app
directory create a new directory called breadmaker
.
In the breadmaker
directory create a rose-app.conf
file that
looks like this:
[command]
default=sleep 10; echo 'fresh bread'
This sets up a simple suite that contains the following:
A
breadmaker
appA
gather_ingredients
taskA
breadmaker
task that runs thebreadmaker
app
Save your changes then install and run the suite using cylc install and cylc play:
cylc validate .
cylc install
cylc play command-keys
Once it has finished use check that the app has worked:
cylc cat-log command-keys//1/breadmaker
The output should include the line “fresh bread”.
Adding Alternative Commands
Open the rose-app.conf
file and edit to look like this:
[command]
default=sleep 10; echo 'fresh bread'
make_dough=sleep 8; echo 'dough for later'
timed_bread=sleep 15; echo 'fresh bread when you want it'
Save your changes and open up your flow.cylc
file. Alter the
[[breadmaker]]
task to look like this:
[[breadmaker]]
script=rose task-run --command-key=make_dough
Save your changes and run the suite. If you inspect the output from the breadmaker task you should see the line “dough for later”.
Edit the script for the [[breadmaker]]
task to change the command key to
timed_bread
. Run the suite and confirm the timed_bread command has been
run.
Summary
You have successfully made use of command keys to run alternate commands in an app.
Possible uses of command keys might be:
Running an app in different modes of verbosity
Running an app in different configurations
Specifying different options to an app
During suite development to aid in debugging an app