Skip to content

Run a command when a file add/update event occurs

License

Notifications You must be signed in to change notification settings

benjamin-trainor/wach

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

`8.`888b                 ,8' .8.           ,o888888o.    8 8888        8
 `8.`888b               ,8' .888.         8888     `88.  8 8888        8
  `8.`888b             ,8' :88888.     ,8 8888       `8. 8 8888        8
   `8.`888b     .b    ,8' . `88888.    88 8888           8 8888        8
    `8.`888b    88b  ,8' .8. `88888.   88 8888           8 8888        8
     `8.`888b .`888b,8' .8`8. `88888.  88 8888           8 8888        8
      `8.`888b8.`8888' .8' `8. `88888. 88 8888           8 8888888888888
       `8.`888`8.`88' .8'   `8. `88888.`8 8888       .8' 8 8888        8
        `8.`8' `8,`' .888888888. `88888.  8888     ,88'  8 8888        8
         `8.`   `8' .8'       `8. `88888.  `8888888P'    8 8888        8


"watch changes"

  Watch for changes to files within the current directory and run a command
  when they occur.

  Wach is really fast, the command is run as soon as the file changes, no
  polling delay.

  Comes with two executables: `wach` and `wachs`.

  The `wach` utility will run any command (or inline shell script) whenever
  files in the current directory are updated.

  The `wachs` (there's an "s" on the end) utility does the same thing but for
  commands that launch a long running process like a web server. It'll kill
  the current process and launch a new one.

Requirements

  Only runs on OS X >=10.7 (Lion and up)

Install

  npm install wach

Examples

  # Run `make` every time a file in the current directory is updated/added
  wach make

  # Compile and run on every change
  wach "gcc hello.c && ./a.out"

  # Only watch for changes to coffee files, compile the one that changed
  wach -o *.coffee, coffee -c {}

  # Run the tests every time a ruby file changes
  TEST_DIR=generators wach -o **/*.rb, bundle exec rake test

  # Restart a node app any time a js file changes
  wachs -o *.js, node server.js

Node API

  wach = require('wach');
  wach('.', function(path) {
    return console.log("something happened to " + path + "!");
  })

Contributing

  Patches welcome. Especially if you'd like to re-write this in plain
  JavaScript. Just fork and make a pull request

Other similar projects:

  Patrick Mueller's wr
  https://github.com/pmuellr/wr

  steakout
  http://michael-mccracken.net/software/stakeout.tgz

  steakout.rb
  http://www.pragmaticautomation.com/cgi-bin/pragauto.cgi/Monitor/StakingOutFileChanges.rdoc

  the --watch flag for coffeescript
  http://jashkenas.github.com/coffee-script/#usage

  unix watch
  http://en.wikipedia.org/wiki/Watch_(Unix)

  TJ Holowaychuk's watch
  https://github.com/visionmedia/watch

  Isaac Z. Schlueter's node-supervisor
  https://github.com/isaacs/node-supervisor

  David Trejo's run.js
  https://github.com/DTrejo/run.js

  Gabriel Gironda's kqfm
  https://github.com/gabrielg/kqfm

  Mark Bao's watchdir
  https://github.com/markbao/watchdir

About

Run a command when a file add/update event occurs

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • CoffeeScript 95.7%
  • Makefile 2.9%
  • JavaScript 1.4%