1-- | A concrete 'ResourceProvider' that gets it's resources from the filesystem
3module Hakyll.Core.ResourceProvider.FileResourceProvider
7import Control.Applicative ((<$>))
8import Control.Monad (forM)
10import System.Directory (doesDirectoryExist, getDirectoryContents)
11import System.FilePath ((</>), normalise)
13import Hakyll.Core.ResourceProvider
14import Hakyll.Core.Identifier
16-- | Create a filesystem-based 'ResourceProvider'
18fileResourceProvider :: IO ResourceProvider
19fileResourceProvider = do
20 list <- map parseIdentifier <$> getRecursiveContents "."
21 return $ ResourceProvider
23 , resourceString = readFile . toFilePath
26-- | Get all contents of a directory. Note that files starting with a dot (.)
29getRecursiveContents :: FilePath -> IO [FilePath]
30getRecursiveContents topdir = do
31 topdirExists <- doesDirectoryExist topdir
33 then do names <- getDirectoryContents topdir
34 let properNames = filter isProper names
35 paths <- forM properNames $ \name -> do
36 let path = topdir </> name
37 isDirectory <- doesDirectoryExist path
39 then getRecursiveContents path
40 else return [normalise path]
44 isProper = not . (== '.') . head
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list