on 12b4e8a help sign in
34 lines 1.2 kB history raw
1-- | A concrete 'ResourceProvider' that gets it's resources from the filesystem
2--
3module Hakyll.Core.Resource.Provider.File
4 ( fileResourceProvider
5 ) where
7import Control.Applicative ((<$>))
9import Data.Time (readTime)
10import System.Directory (getModificationTime)
11import System.Locale (defaultTimeLocale)
12import System.Time (formatCalendarTime, toCalendarTime)
13import qualified Data.ByteString.Lazy as LB
15import Hakyll.Core.Resource
16import Hakyll.Core.Resource.Provider
17import Hakyll.Core.Util.File
18import Hakyll.Core.Configuration
20-- | Create a filesystem-based 'ResourceProvider'
21--
22fileResourceProvider :: HakyllConfiguration -> IO ResourceProvider
23fileResourceProvider configuration = do
24 -- Retrieve a list of paths
25 list <- map Resource . filter (not . shouldIgnoreFile configuration) <$>
26 getRecursiveContents False "."
27 makeResourceProvider list (readFile . unResource)
28 (LB.readFile . unResource)
29 mtime
30 where
31 mtime (Resource r) = do
32 ct <- toCalendarTime =<< getModificationTime r
33 let str = formatCalendarTime defaultTimeLocale "%s" ct
34 return $ readTime defaultTimeLocale "%s" str