module Main where import Control.Applicative import Data.DirStream import Data.String import qualified Filesystem.Path as F import Pipes import Pipes.Prelude hiding (print) import Pipes.Safe import System.Environment import Prelude hiding (length) dirstreamGet :: F.FilePath -> ListT (SafeT IO) F.FilePath dirstreamGet path = do child <- childOf path isDir <- liftIO $ isDirectory child if isDir then pure child <|> descendentOf child else pure child main :: IO () main = do [path] <- getArgs count <- runSafeT $ runEffect $ (length (every (descendentOf (fromString path)))) print count