An open API service indexing awesome lists of open source software.

https://github.com/ayrat555/cronenberg

Simple cron command entry parser
https://github.com/ayrat555/cronenberg

cron nom parser-combinators rust

Last synced: 3 months ago
JSON representation

Simple cron command entry parser

Awesome Lists containing this project

README

          

# cronenberg [![Build Status](https://travis-ci.org/ayrat555/cronenberg.svg?branch=master)](https://travis-ci.org/ayrat555/cronenberg)

## simple cron command entry parser

`cronenberg` provides two core components

* `TimeItem`: An enum that represents cron command time or date field
* `CronItem`: A struct that represents cron command entry, for example, `* * 5-7 1,2,5 8 sudo rm -rf /`

## Installation

`cronenberg` is available on [crates.io](https://crates.io/crates/cronenberg) and can be included in your Cargo enabled project like this:

```toml
[dependencies]
cronenberg = "0.3.0"
```

Then include it in your code like this:

```rust
extern crate cronenberg;
```

## Example

```rust
extern crate cronenberg;

use cronenberg::CronItem;
use cronenberg::TimeItem::*;
use std::str::FromStr;
use std::string::ToString;

let s = "* * 5-7 1,2,5 8 ls -la";
assert_eq!(
CronItem::from_str(s).unwrap(),
CronItem {
minute: AllValues,
hour: AllValues,
day_of_month: Interval((5, 7)),
month: MultipleValues(vec![1, 2, 5]),
day_of_week: SingleValue(8),
command: String::from("ls -la"),
}
);

let cron_item = CronItem {
minute: MultipleValues(vec![1, 10]),
hour: Interval((1, 4)),
day_of_month: Interval((1, 11)),
month: MultipleValues(vec![1, 2, 5]),
day_of_week: AllValues,
command: String::from("pwd"),
};
assert_eq!("1,10 1-4 1-11 1,2,5 * pwd", cron_item.to_string());
```

## Contributing

1. [Fork it!](http://github.com/ayrat555/cronenberg/fork)
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request

## Author

Ayrat Badykov (@ayrat555)

## License

cronenberg is released under the MIT License.