fswatch is a developer tool that triggers commands in response to filesystem changes. Works well on Mac, Linux, and should also works on Windows(not well tested).
go get -u -v github.com/codeskyblue/fswatch
Simple way to use fswatch
$ fswatch -v 3.0 $ fswtach --help show help message ...
Watch file change event and trigger command
TODO: now only watch
*.go, *.c, *.py files, watch depth = 0 (current directory)
$ fswatch sh -c "ls -l | wc -l" fswatch >>>  exec start: sh -c 'ls -l | wc -l' 8 fswatch >>>  finish in 11.822873ms fswatch >>> changed: fswatch.go fswatch >>> delay: 100ms fswatch >>>  exec start: [sh -c ls -l | wc -l] 8 fswatch >>>  finish in 13.606428ms ^Cfswatch >>> Catch signal interrupt! fswatch >>> Kill all running ... Done
Hard way to use fswatch (not recommend)
Create a config file
config file example though command
fswatch with no arguments
desc: Auto generated by fswatch [fswatch] triggers: - pattens: - '**/*.go' - '**/*.c' # also support '!**/test_*.go' env: DEBUG: "1" # if shell is true, $cmd will be wrapped with `bash -c` shell: true cmd: go test -v delay: 100ms stop_timeout:1s signal: "KILL" kill_signal: "SIGTERM" watch_paths: - . watch_depth: 5
Every time you edit a file. Command
go test -v will be called.
$ fswatch fswatch >>> exec start: go test -v # github.com/codeskyblue/fswatch ./fswatch.go:281: main redeclared in this block previous declaration at ./config.go:354 fswatch >>> program exited: exit status 2 fswatch >>> finish in 145.499911ms
support specify config file through
fswatch --config myfsw.yml
You should know
How fswatch kill process
fswatch send signal to all process when restart. (mac and linux killed by pgid, windows by taskkill)
Ctrl+C will trigger fswatch quit and kill all process it started.
More about the pattens. The patten has the same rule like
So you can write like this.
- pattens: - '*.go' - '!*_test.go' - '!**/bindata.go'
main.go changed will trigger command, but
libs/bindata.go will be ignored.
too many open files
For mac, run the following command
sysctl -w kern.maxfiles=20480 sysctl -w kern.maxfilesperproc=18000 ulimit -S -n 2048
Chinese Blog: http://my.oschina.net/goskyblue/blog/194240
I reviewed the first version of fswatch(which was taged 0.1). The code I look now is shit. So I deleted almost 80% code, And left some very useful functions.
- https://github.com/emcrisostomo/fswatch write with cpp
- https://github.com/Unknwon/bra Funny name.