module Main where
import Conduit
import Control.Monad
import Control.Monad.Reader.Class
import Data.Conduit.Find
import Data.List
import System.Environment
import System.Posix.Process
main :: IO ()
main = do
[command, dir] <- getArgs
case command of
"conduit" -> do
putStrLn "Running sourceDirectoryDeep from conduit-extra"
runResourceT $
sourceDirectoryDeep False dir
=$ filterC (".hs" `isSuffixOf`)
$$ mapM_C (liftIO . putStrLn)
"find-conduit" -> do
putStrLn "Running findFiles from find-conduit"
findFiles defaultFindOptions { findFollowSymlinks = False }
dir $ do
path <- asks entryPath
guard (".hs" `isSuffixOf` path)
norecurse
liftIO $ putStrLn path
"find-conduit2" -> do
putStrLn "Running findFiles from find-conduit"
runResourceT $
sourceFindFiles defaultFindOptions { findFollowSymlinks = False }
dir (return ())
=$ filterC ((".hs" `isSuffixOf`) . entryPath . fst)
$$ mapM_C (liftIO . putStrLn . entryPath . fst)
"find" -> do
putStrLn "Running GNU find"
executeFile "find" True [dir, "-name", "*.hs", "-print"] Nothing