The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
Watch the File System for Changes
R binding for ‘libfswatch’, a file system monitoring library. This uses an optimal event-driven API for each platform:
ReadDirectoryChangesW on WindowsFSEvents on MacOSinotify on Linuxkqueue on BSDFile Events Notification on Solaris/IllumosWatching is done asynchronously in the background, without blocking the session.
Install watcher from CRAN with:
install.packages("watcher")watcher requires the ‘libfswatch’ library.
Create a ‘Watcher’ using watcher::watcher().
By default this will watch the current working directory recursively
and write events to stdout.
Set the callback argument to run an R function, or
rlang-style formula, every time a file changes:
later::run_now() is called, for
instance automatically in Shiny’s event loop.library(watcher)
dir <- file.path(tempdir(), "watcher-example")
dir.create(dir)
w <- watcher(dir, callback = ~print(.x), latency = 0.5)
w
#> <Watcher>
#> Public:
#> get_path: function ()
#> initialize: function (path, callback, latency)
#> is_running: function ()
#> start: function ()
#> stop: function ()
#> Private:
#> path: /tmp/RtmpLJO67C/watcher-example
#> running: FALSE
#> watch: externalptr
w$start()
file.create(file.path(dir, "newfile"))
#> [1] TRUE
file.create(file.path(dir, "anotherfile"))
#> [1] TRUE
later::run_now(1)
#> [1] "/tmp/RtmpLJO67C/watcher-example/newfile"
#> [1] "/tmp/RtmpLJO67C/watcher-example/anotherfile"
newfile <- file(file.path(dir, "newfile"), open = "r+")
cat("hello", file = newfile)
close(newfile)
later::run_now(1)
#> [1] "/tmp/RtmpLJO67C/watcher-example/newfile"
file.remove(file.path(dir, "newfile"))
#> [1] TRUE
later::run_now(1)
#> [1] "/tmp/RtmpLJO67C/watcher-example/newfile"
w$stop()
unlink(dir, recursive = TRUE, force = TRUE)Thanks to the authors of ‘libfswatch’, upon which this package is based:
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.