FSEvents Tools
Description
Command-line tools and scripts that use OS X's FSEvents API. Mostly useful for watching a directory and reacting to changes in it.
This post explains why I made this and includes more usage examples.
Usage examples
Alert if any files in a directory are changed.
notifywait /path/; echo "\007"
Rebuild LESS when anything in styles
changes. Assuming you have a script similar to this rebuild_less.sh
:
#!/bin/bash
for less_file in styles/*.less
do
css_file=`echo $less_file | sed -E "s/.less//"`
lessc $less_file $css_file.css
done
...just run:
notifyloop styles ./rebuild_less.sh
Automatically rsync files to a remote server if any of them are changed.
autorsync . 192.168.1.127:/var/www
The above invokes rsync
with -avz
(archive mode, verbose, compress). To
pass additional arguments to rsync
, for example:
RSYNC_OPTS='--exclude="*.pyc"' autorsync . 192.168.1.127:/var/www
To do the same thing "manually":
notifyloop . rsync -avz --exclude="*.pyc" . 192.168.1.127:/var/www
Building from source
Building master
In addition to the standard automake/autoconf/make, you'll need pkg-config. brew install pkg-config
should do the trick.
Once you have all the dependencies, run ./autogen.sh
and make install
.
Building a release tarball
GPG-signed releases are available here.
Building release tarballs requires the same dependencies, except for automake and pkg-config. Once you've installed the dependencies, run:
./configure
make
make install
Depending on permissions, make install
may require sudo
.
Related software
- inotify-tools. The original tools that inspired me to make fsevents-tools.
- Lsyncd. A service to keep files synced between a master and one or more slave servers.