As cron
expressions are not easy to understand and write, Chronis
will help you define
cron jobs using natural language and will generate crontab files for you.
This will also allow you to verison control
your cron job definitions in a structured
file (YAML) and generate crontabs during your deployment
process.
PHP 7 is required for Chronis
to run.
To include Chronis
in your PHP project:
composer require mylk/chronis
You can also install Chronis
as a global command and not as a project's dependency:
composer global require mylk/chronis
To execute Chronis
and get some help:
vendor/bin/chronis list
To execute Chronis
when installed as a global command, first make sure that
$HOME/.config/composer/vendor/bin/
is in your system's $PATH
. Then you can
execute Chronis
from anywhere:
chronis list
Then, you will need to have a yaml
file to define your cron jobs. You can begin with
this as an example.
To dump the crontab:
vendor/bin/chronis dump --config=YOUR_YAML_FILE_PATH
To export the crontab:
vendor/bin/chronis export --config=YOUR_YAML_FILE_PATH --output=my_crontab
The --output
argument is not necessary. If not given, the crontab will be exported to a file
named crontab
in the current directory.
Chronis
is open source and of course you can contribute. Just fork the project, have fun
and then create a pull request.
A Makefile
has been created to group some tasks needed for development. Find those tasks below.
make tests
make check-syntax
The coding style that is followed is PSR-2.
make check-style
make check-quality
- symfony/console - The library used for the command line interface
- bpolaszek/natural-cron-expression - The library that converts the natural language to cron expressions
- symfony/yaml - The library used to read the YAML configuration of your cron jobs
- symfony/dependency-injection - The library that instantiates the sevices used in the project
SemVer is used for versioning. For the versions available, see the tags.
See the list of contributors.
This project is licensed under the GPLv2 License - see the LICENSE file for details.