Skip to content

Latest commit

 

History

History
85 lines (61 loc) · 2.73 KB

README.md

File metadata and controls

85 lines (61 loc) · 2.73 KB

fs

Build Status Erlang Versions Tag

A fork of 'fs': A native file system listener fo macos, win, & linux

Updates for this fork:

  • Fix for relative path
  • Allow one process to subscribe another process (pid as an arg to the new fs:subscribe/2 function)
  • Switch to logger (Erlang 21+)
  • Fixed CI/CD job so tests run again (and added Erlang releases to the test matrix)
  • Moved demo code into its own module (and other minor cleanups).

Backends

NOTE: On Linux you need to install inotify-tools.

Usage

Subscribe to Notifications

> fs:start_link(fs_watcher, "/Users/5HT/synrc/fs"). % need to start the fs watcher
> fs:subscribe(fs_watcher). % the pid will receive events as messages
> flush().
Shell got {<0.47.0>,
           {fs,file_event},
           {"/Users/5HT/synrc/fs/src/README.md",[closed,modified]}}

List Events from Backend

> fs:known_events(fs_watcher). % returns events known by your backend
[mustscansubdirs,userdropped,kerneldropped,eventidswrapped,
 historydone,rootchanged,mount,unmount,created,removed,
 inodemetamod,renamed,modified,finderinfomod,changeowner,
 xattrmod,isfile,isdir,issymlink,ownevent]

Sample Subscriber

> fs_demo:start_looper(). % starts a sample process that logs events
=INFO REPORT==== 28-Aug-2013::19:36:26 ===
file_event: "/tank/proger/erlfsmon/src/4913" [closed,modified]

Receive in gen_server

If you configure fs to send to a gen_server's PID, you can handle fs events with gen_server:handle_info/2, where the first argument is the fs message payload and the second is the gen_server's state. The format of the message payload is as follows:

{SenderPid, {fs, file_event}, {FileName, EventTypes}}

and where EventTypes is a list one or more event types that were part of the event.

Credits

  • Vladimir Kirillov
  • Maxim Sokhatsky
  • Dominic Letz

OM A HUM