diff --git a/yesod-bin/HsFile.hs b/yesod-bin/HsFile.hs index 29095d85..3d9b64cb 100644 --- a/yesod-bin/HsFile.hs +++ b/yesod-bin/HsFile.hs @@ -2,17 +2,31 @@ module HsFile (mkHsFile) where import Text.ProjectTemplate (createTemplate) import Data.Conduit - ( ($$), (=$), runResourceT, ResourceT, ConduitM, awaitForever, yield ) + ( ($$), (=$), runResourceT, ResourceT, ConduitM, awaitForever, yield, Source ) import qualified Data.Conduit.List as CL -import Data.Conduit.Filesystem (traverse, sourceFile) import Prelude hiding (FilePath) import Filesystem.Path ( FilePath ) import Filesystem.Path.CurrentOS ( encodeString ) +import qualified Filesystem as F import qualified Data.ByteString as BS import Control.Monad.IO.Class (liftIO) +traverse :: FilePath -> Source (ResourceT IO) FilePath +traverse dir = do + liftIO (F.listDirectory dir) >>= mapM_ go + where + go fp = do + isFile' <- liftIO $ F.isFile fp + if isFile' + then yield fp + else do + isDir <- liftIO $ F.isDirectory fp + if isDir + then traverse fp + else return () + mkHsFile :: IO () -mkHsFile = runResourceT $ traverse False "." +mkHsFile = runResourceT $ traverse "." $$ readIt =$ createTemplate =$ awaitForever (liftIO . BS.putStr) diff --git a/yesod-bin/yesod-bin.cabal b/yesod-bin/yesod-bin.cabal index 2f553a06..41c24f7d 100644 --- a/yesod-bin/yesod-bin.cabal +++ b/yesod-bin/yesod-bin.cabal @@ -90,7 +90,6 @@ executable yesod , warp >= 1.3.7.5 , wai >= 1.4 , data-default-class - , filesystem-conduit >= 1.0 && < 2.0 ghc-options: -Wall -threaded main-is: main.hs