======== Commands ======== If using [uv](https://docs.astral.sh/uv/), add ``uvx`` to the start of the following commands. The ``crondir`` command supports the following operations: ``crondir build`` ================= Build the crontab from snippets in the cron dir:: crondir build [--cron-dir=] [--no-backup] [--backup-path=] where: * ``--cron-dir=`` - override the path to the cron dir, from ``~/.cron.d/`` * ``--no-backup`` - do not perform a backup * ``--backup-path=`` - override the path to the backup dir, from ``~/.cron.d/backups/`` You will need to run this command after you make any changes to the cron dir. This will make a backup of this user's current crontab, then concatenate all snippets in the cron dir, add any unmanaged existing crontab tasks, then install them as the new crontab for this user. Examples -------- Backup and rebuild the crontab:: crondir build Rebuild without taking a backup:: crondir build --no-backup Instead of ``~/.cron.d/``, use the cron dir ``~/cron_tasks/``:: crondir build --cron-dir=~/cron_tasks/ ``crondir list`` ================ List installed snippets: crondir list [--cron-dir=] where: * ``--cron-dir=`` - override the path to the cron dir, from ``~/.cron.d/`` ``crondir add`` =============== Add a cron snippet:: crondir add [] [--force] [--cron-dir=] where: * ```` - the source file to install. * ```` - optional snippet name - the filename to give it in ``~/.cron.d/``. If not specified, will use the same filename as ``source``. * ``--force`` - if the target already exists, overwrite it. If this is not set and it already exists, it will raise an error. * ``--cron-dir=`` - override the path to the cron dir, from ``~/.cron.d/`` You will need to run ``crondir build`` after this for your change to take effect. Examples -------- Add the file ``project/mytask`` as ``mytask``:: crondir add project/mytask crondir build Add the file ``project/mytask`` as ``project__mytask``:: crondir add project/mytask project__mytask crondir build Add the file ``project/mytask`` ``mytask`` and overwrite if it exists:: crondir add project/mytask --force crondir build Instead of ``~/.cron.d/``, use the cron dir ``~/cron_tasks/``:: crondir add project/mytask --cron-dir=~/cron_tasks/ crondir build --cron-dir=~/cron_tasks/ ``crondir remove`` ================== Remove a cron snippet from the cron dir:: crondir remove [--force] [--cron-dir=] where: * ```` - the snippet name from ``crondir add`` - in other words, the filename in ``~/.cron.d/``. * ``--force`` - if the target does not exists, don't exit with an error. * ``--cron-dir=`` - override the path to the cron dir, from ``~/.cron.d/`` You will need to run ``crondir build`` after this for your change to take effect. Examples -------- Remove the cron snippet named ``mytask``:: crondir remove mytask crondir build Try to remove ``mytask``, but don't fail if it isn't present:: crondir remove mytask --force crondir build Failure state may be useful when chaining commands:: # Only rebuild if the task was removed crondir remove mytask && crondir build # Rebuild whether it was removed or not crondir remove mytask --force && crondir build Instead of ``~/.cron.d/``, use the cron dir ``~/cron_tasks/``:: crondir remove mytask --cron-dir=~/cron_tasks/ crondir build --cron-dir=~/cron_tasks/