-- 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.5
-- | 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)