streamly-examples-0.3.0: examples/FileSystemEvent.hs
{-# LANGUAGE CPP #-}
-- Report all events recursively under the paths provided as arguments
module Main (main) where
import Data.Function ((&))
import System.Environment (getArgs)
import qualified Data.List.NonEmpty as NonEmpty
import qualified Streamly.Data.Fold as Fold
import qualified Streamly.Data.Stream as Stream
import qualified Streamly.FileSystem.Path as Path
#if darwin_HOST_OS
import qualified Streamly.Internal.FS.Event.Darwin as Event
#elif linux_HOST_OS
import qualified Streamly.Internal.FS.Event.Linux as Event
#elif mingw32_HOST_OS
import qualified Streamly.Internal.FS.Event.Windows as Event
#else
#error "FS Events not supported on this platform"
#endif
-------------------------------------------------------------------------------
-- Main
-------------------------------------------------------------------------------
main :: IO ()
main = do
args <- getArgs
paths <- mapM Path.fromString args
Event.watch (NonEmpty.fromList paths)
& Stream.fold (Fold.drainMapM (putStrLn . Event.showEvent))