Like inotify-tools but for OS X's FSEvents
C Shell M4 Makefile Perl
Latest commit 8e5fd1e Apr 1, 2016 @ggreer Merge pull request #17 from Klortho/rsync-opts
Add ability to set rsync options with an environment variable
Permalink
Failed to load latest commit information.
doc
src
tests Add a basic cram test. Apr 17, 2015
.clang-format
.gitignore Remove underscores in script names for consistency. Remove weird thin… Dec 30, 2015
.travis.yml Add .travis.yml. Dec 24, 2015
LICENSE
Makefile.am Remove underscores in script names for consistency. Remove weird thin… Dec 30, 2015
NOTICE Update autoconf info. Start moving stuff into src Jan 27, 2014
README.md Add ability to set rsync options with an environment variable Mar 27, 2016
autogen.sh
autorsync
configure.ac Bump to version 1.0. Not much should change in the interface now. Dec 30, 2015
format.sh
notifyloop Remove underscores in script names for consistency. Remove weird thin… Dec 30, 2015

README.md

FSEvents Tools

Build Status

Floobits Status

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.