https://github.com/Raynes/filevents.git
git clone 'https://github.com/Raynes/filevents.git'
(ql:quickload :Raynes.filevents)
A simple Clojure library for doing file system monitoring.
It's pretty simple. There are individual watch-file
and watch-directory
functions, but the one you should be most interested in is watch
. It can watch
both files and directories and any number of them at once.
(watch (fn [kind file]
(println kind)
(println file))
"foo" "bar/")
The above example sets up an event on the file foo
and all files
(recursively) under the directory bar/
.
It's pretty simple:
foo
or any file under bar/
), calls
the function with the arguments :modified
and the file itself.:deleted
and
the file itself.:created
and the file itself.The library works by polling. All intervals are dynamic vars that can be set before a watch function is called. By default, the time between checks for modification and deletion of a file is 300ms because these checks are very fast. The time between check for newly created files in watched directories is 1 second because this can be slow for large directories because it must populate a set of files on each iteration and check it against the old set. For large directories, you might need to set the number higher.
Think of filaments.
Copyright © 2012 Anthony Grimes
Distributed under the Eclipse Public License, the same as Clojure.