HsFile.hs 749 B

12345678910111213141516171819202122
  1. {-# LANGUAGE CPP #-}
  2. {-# LANGUAGE OverloadedStrings #-}
  3. module HsFile (mkHsFile) where
  4. import Text.ProjectTemplate (createTemplate)
  5. import Data.Conduit
  6. ( ($$), (=$), awaitForever)
  7. import Data.Conduit.Filesystem (sourceDirectory)
  8. import Control.Monad.Trans.Resource (runResourceT)
  9. import qualified Data.Conduit.List as CL
  10. import qualified Data.ByteString as BS
  11. import Control.Monad.IO.Class (liftIO)
  12. import Data.String (fromString)
  13. mkHsFile :: IO ()
  14. mkHsFile = runResourceT $ sourceDirectory "."
  15. $$ readIt
  16. =$ createTemplate
  17. =$ awaitForever (liftIO . BS.putStr)
  18. where
  19. -- Reads a filepath from upstream and dumps a pair of (filepath, filecontents)
  20. readIt = CL.map $ \i -> (fromString i, liftIO $ BS.readFile i)