Fair enough, I have to look up the documentation plenty myself. But on the upside it can generate almost any conceivable regular date-time sequence, and is also “standards based” (ISO 8601 recurrences). In my opinion, it is harder to make mistakes if you stick to the non-abbreviated recurrence forms (in case that helps).
That’s an interesting one. Cylc’s graph recurrence notation can define any regular sequence, with optional exclusions that can also be regular sequences, but I can’t see how to express a multi-year weekly cycle that excludes all months but August. (Maybe someone else can).
If you have to, you could resort to a simple weekly Monday cycle R/W-1/P1W and tasks that share a few lines of scripting to simply succeed without doing anything if the cycle point month is not August.
A more elegant but more involved way is a yearly-cycling suite that runs a Mondays-in-August sub-suite for each year:
[cylc]
cycle point format = %Y
[scheduling]
initial cycle point = 1999
final cycle point = 2019
[[dependencies]]
[[[R1]]]
graph = prep => august
[[[P1Y]]]
graph = august[-P1Y] => august
[runtime]
[[prep]]
script = """rm -r $HOME/cylc-run/august
cylc register august $HOME/suites/august"""
[[august]]
script = cylc run --no-detach --set=YEAR=$CYLC_TASK_CYCLE_POINT august
And the sub-suite, in $HOME/suites/august/suite.rc:
#!Jinja2
[cylc]
cycle point format = %Y-%m-%d
[scheduling]
initial cycle point = {{YEAR}}-08-01
final cycle point = {{YEAR}}-08-31
[[dependencies]]
[[[R/W-1/P1W]]]
graph = foo
Note there is no overlap between successive runs of the sub-suite, so I just re-used the same sub-suite run directory for each year. Result, in the sub-suite run directory, on running the main suite:
[drugs-and-money]$ find august -name 'job.out' | sort
august/log/job/1999-08-02/foo/01/job.out
august/log/job/1999-08-09/foo/01/job.out
august/log/job/1999-08-16/foo/01/job.out
august/log/job/1999-08-23/foo/01/job.out
august/log/job/1999-08-30/foo/01/job.out
august/log/job/2000-08-07/foo/01/job.out
august/log/job/2000-08-14/foo/01/job.out
august/log/job/2000-08-21/foo/01/job.out
august/log/job/2000-08-28/foo/01/job.out
...
august/log/job/2018-08-06/foo/01/job.out
august/log/job/2018-08-13/foo/01/job.out
august/log/job/2018-08-20/foo/01/job.out
august/log/job/2018-08-27/foo/01/job.out
august/log/job/2019-08-05/foo/01/job.out
august/log/job/2019-08-12/foo/01/job.out
august/log/job/2019-08-19/foo/01/job.out
august/log/job/2019-08-26/foo/01/job.out