| Title: | Watch the File System for Changes |
|---|---|
| Description: | R binding for 'libfswatch', a file system monitoring library. Watch files, or directories recursively, for changes in the background. Log activity, or run an R function every time a change event occurs. |
| Authors: | Charlie Gao [aut, cre] (ORCID: <https://orcid.org/0000-0002-0750-061X>), Posit Software, PBC [cph, fnd] (ROR: <https://ror.org/03wc8by49>) |
| Maintainer: | Charlie Gao <[email protected]> |
| License: | MIT + file LICENSE |
| Version: | 0.1.4.9000 |
| Built: | 2025-10-20 12:51:14 UTC |
| Source: | https://github.com/r-lib/watcher |
Create a 'Watcher' on a filesystem location to monitor for changes in the background.
watcher(path = getwd(), callback = NULL, latency = 1)watcher(path = getwd(), callback = NULL, latency = 1)
path |
Character path to a file, or directory to watch recursively, or a vector of paths. Defaults to the current working directory. |
callback |
A function or formula (see rlang::as_function), which takes
at least one argument. It will be called back with a character vector
comprising the paths of all files that have changed. The default, |
latency |
Numeric latency in seconds for events to be reported or callbacks triggered. The default is 1s. |
Uses an optimal event-driven API for each platform: 'ReadDirectoryChangesW' on Windows, 'FSEvents' on MacOS, 'inotify' on Linux, 'kqueue' on BSD, and 'File Events Notification' on Solaris/Illumos.
Note: the latency setting controls how often the changes are processed, and
does not mean that changes are polled for at this interval. The changes are
monitored in an event-driven fashion by the platform-specific monitor. Events
are 'bubbled' such that a single change that triggers multiple filesystem
events will cause the callback to be called only once.
It is possible to set a watch on a path that does not currently exist, and it will be monitored once created.
A 'Watcher' R6 class object.
A Watcher is an R6 class with the following methods:
$start() starts background monitoring. Returns logical TRUE upon
success, FALSE otherwise.
$stop() stops background monitoring. Returns logical TRUE upon success,
FALSE otherwise.
$get_path() returns the watched path as a character string.
$is_running() returns logical TRUE or FALSE depending on whether the
monitor is running.
w <- watcher(tempdir()) w$start() w w$get_path() w$stop() w$is_running() Sys.sleep(1)w <- watcher(tempdir()) w$start() w w$get_path() w$stop() w$is_running() Sys.sleep(1)