Ruby gem to validate an entry that will be used in crontab.
The crontab syntax checker is simple to use. These examples demonstrate three ways to quickly check that an entry is formatted correctly.
You may input your candidate crontab entry as a string to the verify_crontab_line() function:
> require 'crontab_syntax_checker'
=> true
> verify_crontab_line("5,35 */2 10-20,25-30 * 1-5 /foo/var | spam - > eggs.log")
=> "5,35 */2 10-20,25-30 * 1-5 /foo/var | spam - > eggs.log"
A string representation is returned upon success. A RuntimeError is raised when the format is invalid.
Another way to validate entries is by breaking up the crontab fields into a hash:
> require 'crontab_syntax_checker'
=> true
> verify_crontab_hash(
:minute=>"5,35",
:hour=>"*/2",
:day=>"10-20,25-30",
:month=>"*",
:weekday=>"1-5",
:command=>"/foo/var | spam - > eggs.log")
=> "5,35 */2 10-20,25-30 * 1-5 /foo/var | spam - > eggs.log"
A string representation is returned upon success. A RuntimeError is raised when the format is invalid.
Finally you can create a CrontabLine object directly and use setter methods for each field, which will be validated as they are set. For example:
> require 'crontab_syntax_checker'
=> true
> crontab = CrontabLine.new
=> #<CrontabLine:0x100... >
> crontab.minute = "5,35"
=> "5,35"
> crontab.hour = "*/2"
=> "*/2"
> crontab.day = "10-20,25-30"
=> "10-20,25-30"
> crontab.month = "*"
=> "*"
> crontab.weekday = "1-5"
=> "1-5"
> crontab.command = "/foo/var | spam - > eggs.log"
=> "/foo/var | spam - > eggs.log"
> crontab.to_s
=> "5,35 */2 10-20,25-30 * 1-5 /foo/var | spam - > eggs.log"
When no RuntimeError is raised, the crontab field is valid.
Keep in mind that the verify functions or CrontabLine#to_s may not return exactly the same string as your input. The output, though possibly not equal, should be equivalent crontab syntax. If a crontab list in a field contains an asterisk, with no stepping indicated, then the entire field will be converted to an asterisk. Extra white space in the command field will be truncated. If this is a concern, use your own input in crontab after it has been validated.
The crontab validation here is based on the man 5 crontab file syntax description. Supported fields are asterisks, numbers, ranges, lists, and stepping (for ranges and asterisks). Numbers must be within the valid range as per the man file. Not supported are macro/named times. See the man file for more info.
Crontab Syntax Checker is maintained by Stephen Sloan and is funded by BookRenter.com.
Copyright (c) 2011 Stephen Sloan, Bookrenter.com. See LICENSE.txt for further details.