Monitors paths and upon detecting changes runs the specified command.
Intended for automatically running tests upon code changes, it can also be useful for running any command upon changes to files.
Any number of paths may be monitored and directories will be recursively monitored.
Both white list and black list are supported to refine exactly what paths are monitored, with the white list taking precedence over the black list.
By default an initial command run is performed but this can be turned off.
In addition any file changes detected during a command run can be discarded at the end of the run to avoid an immediate rerun.
Nosier uses the Linux inotify facility for monitoring paths and as such it doesn't put as much load on the cpu and disk compared to regularly scanning and calculating checksums.
Further it can act immediately upon file changes rather than waiting for the next scan. By default there is a small delay of 0.1 second before performing a command run in order to collect file changes that occur very close together.
It is however limited to Linux 2.6 since it depends on the inotify facility.
To run py.test upon changes:
nosier py.test tests
To run nose upon changes:
nosier nosetests tests
To rsync a project to another host upon changes (note quotes are required here for the options passed to rsync):
nosier "rsync -av awesome_project remote_host:/work/area/"
Installation with pip:
pip install nosier
Installation with easy install: