The delta package
Delta is a library for detecting file changes in any given directory. The package is written using the sodium FRP library but it also provides a callback based API.
File changes on OS X are based on the FSEvents API that is also used by TimeMachine. On other operating systems the library currently uses recursive descents in directories. I will include inotify for Linux. If someone would like to have a non-polling based API for windows or BSD, I would really like it if anyone would contribute.
The project also contains an executable, delta-run, which allows you to run arbitrary shell commands when a file in a directory (recursively) changes.
$> delta-run --help Usage: delta-run [-i|--interval INTERVAL] [-v|--verbose] FILE CMD Available options: -h,--help Show this help text -i,--interval INTERVAL Run at most every n seconds -v,--verbose Print extra output FILE The directory that is watched CMD The command to run
For example you could use delta-run to rebuild your project everytime the source changes like this:
delta-run ./src "cabal build"
|Versions||0.1.0.0, 0.1.0.1, 0.1.2.0, 0.2.0.0, 0.2.1.0, 0.2.1.1, 0.2.1.2|
|Dependencies||base (>=4.6 && <4.9), containers (>=0.5), delta, directory (>=1.2), filepath (>=1.3), hfsevents (>=0.1.5), optparse-applicative (>=0.10), process (>=1.2), sodium (>=0.11), time (>=1.5) [details]|
|Source repository||head: git clone https://github.com/kryoxide/delta.git|
|Uploaded||Thu Jul 23 17:23:29 UTC 2015 by muzzle|
|Updated||Thu Jul 23 21:07:40 UTC 2015 by muzzle to revision 2|
|Downloads||713 total (4 in the last 30 days)|
|Status||Docs available [build log]
Last success reported on 2015-07-23 [all 1 reports]
|build_fs_events||Build in FSEvents support (OS X)||Enabled||Automatic|
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
For package maintainers and hackage trustees