@hackage trigger1.0.2.0

Trigger is a cross platform file system watcher for super fast build-and-restart workflows.

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

Configuration

Create a file named trigger.yaml

Here is an example:

- 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.