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

https://github.com/dannyben/enforce

DSL for verifying file/folder content
https://github.com/dannyben/enforce

dsl gem ruby rules-engine

Last synced: 7 months ago
JSON representation

DSL for verifying file/folder content

Awesome Lists containing this project

README

          

# Enforce - A DSL for verifying file/folder content

[![Gem Version](https://badge.fury.io/rb/enforce.svg)](https://badge.fury.io/rb/enforce)
[![Build Status](https://github.com/DannyBen/enforce/workflows/Test/badge.svg)](https://github.com/DannyBen/enforce/actions?query=workflow%3ATest)
[![Maintainability](https://api.codeclimate.com/v1/badges/797b00ba3f6291f7b989/maintainability)](https://codeclimate.com/github/DannyBen/enforce/maintainability)

---

Create globally available DSL scripts to verify the existence of files in
a folder, and the contents of these files.

---

## Install

```
$ gem install enforce
```

## Example

[![asciicast](https://asciinema.org/a/bGvwdnrAzrUeHeGvY4UYfIdFZ.png)](https://asciinema.org/a/bGvwdnrAzrUeHeGvY4UYfIdFZ)

Also see the [example folder](/example).

## Usage

1. Create a rules file containing any of the DSL commands below.
2. Run `$ enforce ` in the directory you want to test
(without the `.rb` extension)

Rules files are ruby scripts that are located either in the current directory
or in your home directory, under `enforce` subdirectory (`~/enforce/*.rb`).

If you wish to place your rules files elsewhere, set the `ENFORCE_HOME`
environment variable.

## DSL

### File Commands

Verify that a file exists:

```ruby
file 'filename'
```

Verify that a file exists, and has (or doesn't have) some content:

```ruby
file 'filename' do
text 'any content'
no_text 'other content or regex'

regex /any.regex/
no_regex /any.regex/

line 'line to match, leading and trailing spaces are ignored'
no_line 'line to make sure is not in the file'
end
```

Verify that a file does not exist:

```ruby
no_file 'filename'
```

### Folder Commands

Verify that a folder exists:

```ruby
folder 'dirname'
```

Verify that a folder does not exist:

```ruby
no_folder 'dirname'
```

Verify that a folder exists, and run additional validations inside it:

```ruby
folder 'dirname' do
file 'file-inside-dirname'
file 'another-file' do
text 'some content'
end
end
```