cabal-gild-0.3.0.0: source/library/CabalGild/Class/MonadWalk.hs
module CabalGild.Class.MonadWalk where
import qualified System.Directory as Directory
import qualified System.FilePath as FilePath
class (Monad m) => MonadWalk m where
walk :: FilePath -> m [FilePath]
instance MonadWalk IO where
walk = listDirectoryRecursively
listDirectoryRecursively :: FilePath -> IO [FilePath]
listDirectoryRecursively d = do
es <- Directory.listDirectory d
let f e = do
let p = FilePath.combine d e
b <- Directory.doesDirectoryExist p
if b
then listDirectoryRecursively p
else pure [p]
concat <$> mapM f es