``CONSFIGURATOR.PROPERTY.PERIODIC``
===================================
API reference
-------------

General
~~~~~~~

Macro: ``PERIODIC:AT-MOST``
^^^^^^^^^^^^^^^^^^^^^^^^^^^

``(periodic:at-most period desc &body propapps)``

Only attempt to apply PROPAPPS at most every PERIOD.  Supported values for
PERIOD are :each-reboot, :hourly, :daily, :weekly, :monthly, :yearly.  It is
assumed that a month has 30 days and a year has 365.25 days.

The purpose of this combinator is to avoid applying properties that are
expensive to apply more often than it is useful to apply them.  It is not for
scheduling tasks to occur at specific times or on specific days.

The application of PROPAPPS is tracked by creating a flagfile on the remote
with a name computed from DESC.  The mtime of this file is examined to
determine whether PERIOD has passed and another attempt to apply PROPAPPS
should be made.  Thus, you must ensure that DESC is unique among the
descriptions of all the properties that will be applied to this host as this
user.

Macro: ``PERIODIC:REAPPLIED-AT-MOST``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

``(periodic:reapplied-at-most period desc &body propapps)``

Apply PROPAPPS; only every PERIOD, also unapply them before applying them.

This is useful to periodically redo the application of PROPAPPS.
For example, you can use this to occasionally completely rebuild a
CHROOT:OS-BOOTSTRAPPED chroot instead of only ever updating its contents.

PERIOD and DESC are as for PERIODIC:AT-MOST, which see.
