-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Cross platform library for file creation, modification, and deletion notification. -- -- Cross platform library for file creation, modification, and deletion -- notification. This library builds upon existing libraries for -- platform-specific Window, Mac, and Linux filesystem event -- notification. @package fsnotify @version 0.0.3 -- | cross-platform file watching. module System.FSNotify -- | A file event reported by a file watcher. Each event contains the -- canonical path for the file and a timestamp guaranteed to be after the -- event occurred (timestamps represent current time when FSEvents -- receives it from the OS and/or platform-specific Haskell modules). data Event Added :: FilePath -> UTCTime -> Event Modified :: FilePath -> UTCTime -> Event Removed :: FilePath -> UTCTime -> Event data WatchManager -- | Perform an IO action with a WatchManager in place. Tear down the -- WatchManager after the action is complete. withManager :: (WatchManager -> IO a) -> IO a -- | Start a file watch manager. Directories can only be watched when they -- are managed by a started watch watch manager. When finished watching. -- you must release resources via stopManager. It is preferrable -- if possible to use withManager to handle this automatically. startManager :: IO WatchManager -- | Stop a file watch manager. Stopping a watch manager will immediately -- stop watching for files and free resources. stopManager :: WatchManager -> IO () defaultConfig :: WatchConfig -- | Config object, currently used just for debouncing events. data WatchConfig DebounceDefault :: WatchConfig Debounce :: NominalDiffTime -> WatchConfig NoDebounce :: WatchConfig withManagerConf :: WatchConfig -> (WatchManager -> IO a) -> IO a startManagerConf :: WatchConfig -> IO WatchManager -- | Watch the immediate contents of a directory by committing an Action -- for each event. Watching the immediate contents of a directory will -- only report events associated with files within the specified -- directory, and not files within its subdirectories. No two events -- pertaining to the same FilePath will be executed concurrently. watchDir :: WatchManager -> FilePath -> ActionPredicate -> Action -> IO () -- | Watch the immediate contents of a directory by streaming events to a -- Chan. Watching the immediate contents of a directory will only report -- events associated with files within the specified directory, and not -- files within its subdirectories. watchDirChan :: WatchManager -> FilePath -> ActionPredicate -> EventChannel -> IO () -- | Watch all the contents of a directory by committing an Action for each -- event. Watching all the contents of a directory will report events -- associated with files within the specified directory and its -- subdirectories. No two events pertaining to the same FilePath will be -- executed concurrently. watchTree :: WatchManager -> FilePath -> ActionPredicate -> Action -> IO () -- | Watch all the contents of a directory by streaming events to a Chan. -- Watching all the contents of a directory will report events associated -- with files within the specified directory and its subdirectories. watchTreeChan :: WatchManager -> FilePath -> ActionPredicate -> EventChannel -> IO () module System.FSNotify.Devel -- | In the given directory tree, for files with the given file extension -- perform the given action treeExtAny :: WatchManager -> FilePath -> Text -> (FilePath -> IO ()) -> IO () -- | Example of compiling scss files with compass compass :: -- WatchManager -> FilePath -> IO () compass man dir = do putStrLn -- $ compass ++ encodeString dir treeExtExists man dir -- scss $ fp -> when (deploy notElem -- splitDirectories fp) $ do let d = encodeString $ head -- (splitDirectories rel) system cd ++ d ++ && bundle -- exec compass compile return () -- -- In the given directory tree, watch for any Added and Modified events -- (but ignore Removed events) for files with the given file extension -- perform the given action treeExtExists :: WatchManager -> FilePath -> Text -> (FilePath -> IO ()) -> IO () doAllEvents :: Monad m => (FilePath -> m ()) -> Event -> m () allEvents :: (FilePath -> Bool) -> (Event -> Bool) existsEvents :: (FilePath -> Bool) -> (Event -> Bool)