The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
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[@]dogado.de.
Watch the File System for Changes
R binding for ‘libfswatch’, a file system monitoring library. This uses the 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 the current development version of watcher using:
::pak("r-lib/watcher") pak
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)
<- file.path(tempdir(), "watcher-example")
dir dir.create(dir)
<- watcher(dir, callback = ~print(.x), latency = 0.5)
w
w#> <Watcher>
#> Public:
#> initialize: function (path, callback, latency)
#> path: /tmp/RtmpcSO6DA/watcher-example
#> running: FALSE
#> start: function ()
#> stop: function ()
#> Private:
#> watch: externalptr
$start()
w
file.create(file.path(dir, "newfile"))
#> [1] TRUE
file.create(file.path(dir, "anotherfile"))
#> [1] TRUE
::run_now(1)
later#> [1] "/tmp/RtmpcSO6DA/watcher-example/newfile"
#> [2] "/tmp/RtmpcSO6DA/watcher-example/anotherfile"
<- file(file.path(dir, "newfile"), open = "r+")
newfile cat("hello", file = newfile)
close(newfile)
::run_now(1)
later#> [1] "/tmp/RtmpcSO6DA/watcher-example/newfile"
file.remove(file.path(dir, "newfile"))
#> [1] TRUE
::run_now(1)
later#> [1] "/tmp/RtmpcSO6DA/watcher-example/newfile"
$stop()
wunlink(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.
Health stats visible at Monitor.