Rerun
=====

Re-run the given command every time files under the current directory are
updated.

Usage
=====

::

    rerun [options] <command>

where 'options' may include::

    --verbose|-v        List changed files before <command> output
    --ignore|-i <D>     Directory or filename to ignore. Changes to this file
                        do not trigger another execution of <command>.

e.g::

    rerun python -m unittest mypackage.mymodule

will rerun your tests every time you save your source code. Handy for seeing
the new test results in a console window after you hit 'save' in your editor,
without having to change window focus.

It detects changes to files by polling file modification times once per second.
On detecting any changes, it clears the terminal and reruns the given command.

Polling for modification times perhaps isn't ideal. Registering of OS-specific
notifications of file system events might be better. In practice though, I
haven't noticed it burden my machine, even in project directories containing
hundreds of files.

It ignores directories called .svn, .git, .hg, .bzr, build and dist.
It ignores files ending with .pyc or .pyo.


Dependencies
============

Tested on WindowsXP, Windows 7, MacOSX, and Ubuntu.

Runs under Python2.7 or 3.2.

No other dependencies.


Install
=======

::

    pip install rerun


Thanks
======

The idea came from the Bash command 'watch', and inspiration for this
implementation came from an old blog post by Jeff Winkler, whos website
http://jeffwinkler.net seems to have now died.

Contact
=======

Jonathan Hartley, tartley@tartley.com

