README.markdown @ 0e92c9363422 v0.2.1
Don't choke on deleted files.
| author | Steve Losh <steve@stevelosh.com> |
|---|---|
| date | Sat, 24 Nov 2012 13:54:18 -0500 |
| parents | 6ba80dea5994 |
| children | 6cdd3ed3ef12 |
peat ==== `peat` repeats commands. It's kind of like [Kicker][] except: * It doesn't use inotify or OS X FSEvents, so it'll run anywhere. * It doesn't require external libraries, so it'll run anywhere with Python. * It won't eat your CPU (unless you try to watch too much). * It takes paths to watch on standard input so you can use something like find(1) or [friendly-find][] to specify what to watch. [Kicker]: https://github.com/alloy/kicker [friendly-find]: https://github.com/sjl/friendly-find Installation ------------ Get the `peat` script on your machine and into your `$PATH` somehow. Copy and paste it, `curl` it, or clone the repository. Make sure it's executable. That's it. Usage ----- Generate a list of files you want to watch for changes, separated by whitespace. echo(1), find(1) or [friendly-find][] are good for this: ffind '.*.py$' ./foo.py ./bar.py echo *.py foo.py bar.py Now pipe that to `peat`, and specify the command you want to run whenever one of those files changes: ffind '.*.py$' | peat 'echo "A file changed!"' Use `Ctrl-C` to stop. The command to run needs to be specified as a single argument to `peat`. You can do this with a shell string as seen above. Using a single-quoted string like this will preserve wildcards and such: ffind '.*.py$' | peat 'rm *.pyc' This will delete all `.pyc` files in the current directory when a Python file is modified. Google around for "shell quoting" if you don't understand what's happening here. Here's the full usage: Usage: peat [options] COMMAND A list of paths to watch should be piped in on standard input. COMMAND should be given as a single argument using a shell string. For example: find . | peat './test.sh' find . -name '*.py' | peat 'rm *.pyc' find . -name '*.py' -print0 | peat -0 'rm *.pyc' Options: -h, --help show this help message and exit -i N, --interval=N interval between checks in milliseconds -I, --smart-interval determine the interval based on number of files watched (default) -c, --clear clear screen before runs (default) -C, --no-clear don't clear screen before runs -v, --verbose show extra logging output (default) -q, --quiet don't show extra logging output -w, --whitespace assume paths on stdin are separated by whitespace (default) -n, --newlines assume paths on stdin are separated by newlines -s, --spaces assume paths on stdin are separated by spaces -0, --zero assume paths on stdin are separated by null bytes License ------- Copyright 2012 Steve Losh and contributors. Licensed under [version 3 of the GPL][gpl]. Remember that you can use GPL'ed software through their command line interfaces without any license-related restrictions. `peat`'s command line interface is the only stable one, so it's the only one you should ever be using anyway. The license doesn't affect you unless you're: * Trying to copy the code and release a non-GPL'ed version of `peat`. * Trying to use it as a Python module from other Python code (for your own sanity I urge you to not do this) and release the result under a non-GPL license. [gpl]: http://www.gnu.org/copyleft/gpl.html