packages feed

trigger-1.0.2.0: README.md

# Trigger

`Trigger` is a cross platform file system watcher for super fast build-and-restart workflows. When files change, it can be configured to:
 - run build tasks
 - restart your app in the background

`fswatch` and others are good general purpose tools for triggering tasks on filesystem changes. 
However, they don't support stopping and starting background processes.

# How does it work?

```
         -------------------------------
        | start processes in background |
         -------------------------------
                       |
                 wait for change <-----------
                       |                     |
         -------------------------------     |
        |   stop background processes   |    |
         -------------------------------     |
                       |                     |
         -------------------------------     |
        | run build tasks sequentially  |    |
         -------------------------------     |
                       |                     |
         -------------------------------     |
        | start processes in background |    |
         -------------------------------     |
                       |                     |
                        ---------------------  

```

# Installation

It's Haskell, so download Stack.

Clone and run `stack build --install`

This should install `trigger` on your PATH.

If you get linking issues on Windows, see [this issue](https://github.com/commercialhaskell/stack/issues/425)

# Configuration

Create a file named `trigger.yaml`

Here is an example:
```yaml
- dirs:
    - "src"
  files:
    - "**/*.hs"
  ignore:
    - "**/Ignored.hs"
  tasks: 
    - "stack build"
  run:
    - "target/executable"      
```

Which consists of:

- `dirs`: one or more directories to watch for changes
- `files`: one or more file globs. Files that don't match will not trigger. 
- `ignore`: (optional) one or more file globs. Overrides the above file globs to exclude particular files. 
- `tasks`: (optional) one or more tasks, which are run sequentially in the foreground. Any error will stop subsequent tasks.
- `run`: (optional) one or more background processes.