flinch v1.0.2
flinch
Multitask with cat-like reflexes
Installation
npm install -g flinchFeatures
Flinch provides an easy to use API for blocking and signaling on events. When you have multiple terminal sessions open and need to queue up long running commands, flinch comes to the rescue.
Organizing your code into several, small and reusable packages is great. Unfortunately, you may find yourself needing to build and run tasks in several repositories at once. When that happens, things can get difficult. Anyone who's tried to use Git submodules can testify to that.
Flinch exposes a few simple commands
flinch serverspawns an HTTP server that acts as the mediator for event blocking and signalingflinch on <event>will block until the specified event has firedflinch at <event>will signal that the specified event has occurred, causing anything blocking on it to exit with a status code of 0flinch gg <event>will signal that the specified event has failed, causing anything blocking on it to exit with a status code of 1flinch flushwill clear the list of events the server remembers having been fired at
By default, flinch at and flinch gg announcements have a TTL of 10 minutes,
which helps to alleviate race condition concerns of flinch on not being run
until after the event is flinched at. This time can be explicitly set via the
--ttl flag.
Usage
Usage: flinch [options] [command]
Commands:
server [options] start a flinch server
s alias for server command
on <event> block on the specified event
at [options] <event> announce that the specified event has occurred
gg [options] <event> announce that the specified event has failed
flush clear list of announced events
f alias for flush command
Options:
-h, --help output usage information
-V, --version output the version number
-p, --port [port] specify which port to use [Default: 3030]
Options for server command:
-g, --growl enable growl notifications
Options for gg and at commands:
-t, --ttl [ttl] set time to live for event success announcement in minutesContrived usage example
After starting flinch server, you may do something like this:
# Terminal 1
make clean && make && make test && flinch at model
# Terminal 2
make clean && flinch on model && make && flinch at worker
# Terminal 3
rake clean && flinch on model && ./some_script && flinch on worker && rake deployHow it works
Flinch works by having an HTTP server running in the background that acts as a
mediator between blockers and signalers. flinch on blockers will poll the
server once per second for updates on the event they're waiting on. flinch at
and flinch gg will send a POST request to the server to announce the event
status. That's all there is to it.
