@@ -21,6 +21,7 @@ module Data.FileEmbed
2121 embedFile
2222 , embedOneFileOf
2323 , embedDir
24+ , embedDirListing
2425 , getDir
2526 -- * Embed as a IsString
2627 , embedStringFile
@@ -118,6 +119,18 @@ embedDir fp = do
118119 e <- ListE <$> ((runIO $ fileList fp) >>= mapM (pairToExp fp))
119120 return $ SigE e typ
120121
122+-- | Embed a directory listing recursively in your source code.
123+--
124+-- > myFiles :: [FilePath]
125+-- > myFiles = $(embedDirListing "dirName")
126+--
127+-- @since 0.0.11
128+embedDirListing :: FilePath -> Q Exp
129+embedDirListing fp = do
130+ typ <- [t| [FilePath] |]
131+ e <- ListE <$> ((runIO $ fmap fst <$> fileList fp) >>= mapM strToExp)
132+ return $ SigE e typ
133+
121134-- | Get a directory tree in the IO monad.
122135--
123136-- This is the workhorse of 'embedDir'