{-# LANGUAGE RecordWildCards #-}
module FileCount (fileCount) where
import Control.Monad.RWS
import System.FilePath
import System.Directory
import System.PosixCompat.Files
import TraverseDir
import App
fileCount :: MyApp Int ()
fileCount = do
AppState {..} <- get
fs <- liftIO $ getFileStatus curPath
when (isDirectory fs) $ do
AppConfig {..} <- ask
when (curDepth <= maxDepth) $ traverseDirectoryWith fileCount
files <- liftIO $ listDirectory curPath
tell [(curPath, length $ filterFiles ext files)]
where
filterFiles Nothing = id
filterFiles (Just ext) = filter (ext `isExtensionOf`)