diff options
| author | Jasper Van der Jeugt <m@jaspervdj.be> | 2012-11-09 16:34:45 +0100 |
|---|---|---|
| committer | Jasper Van der Jeugt <m@jaspervdj.be> | 2012-11-09 16:34:45 +0100 |
| commit | 1319bbfe4ab3ddd321bcbb902bba7392ad868324 (patch) | |
| tree | 5fdcad316015db237b18ff7e22e0e73c5044cc6f /src/Hakyll/Core/Resource/Modified.hs | |
| parent | dac3fac342c2fb8610b6f1d83cbfd97a70cf17f1 (diff) | |
| download | hakyll-1319bbfe4ab3ddd321bcbb902bba7392ad868324.tar.gz | |
Remove Resource type
Diffstat (limited to 'src/Hakyll/Core/Resource/Modified.hs')
| -rw-r--r-- | src/Hakyll/Core/Resource/Modified.hs | 82 |
1 files changed, 0 insertions, 82 deletions
diff --git a/src/Hakyll/Core/Resource/Modified.hs b/src/Hakyll/Core/Resource/Modified.hs deleted file mode 100644 index 8492108..0000000 --- a/src/Hakyll/Core/Resource/Modified.hs +++ /dev/null @@ -1,82 +0,0 @@ --------------------------------------------------------------------------------- -module Hakyll.Core.Resource.Modified - ( resourceModified - , resourceModificationTime - ) where - - --------------------------------------------------------------------------------- -import Control.Applicative ((<$>), (<*>)) -import Control.Monad (when) -import qualified Crypto.Hash.MD5 as MD5 -import qualified Data.ByteString as B -import qualified Data.ByteString.Lazy as BL -import Data.IORef -import qualified Data.Map as M -import Data.Time (UTCTime) -import System.Directory (getModificationTime) - - --------------------------------------------------------------------------------- -import Hakyll.Core.Resource -import Hakyll.Core.Resource.MetadataCache -import Hakyll.Core.Resource.Provider.Internal -import Hakyll.Core.Store (Store) -import qualified Hakyll.Core.Store as Store - - --------------------------------------------------------------------------------- --- | A resource is modified if it or its metadata has changed -resourceModified :: ResourceProvider -> Resource -> IO Bool -resourceModified rp r - | not exists = return False - | otherwise = do - cache <- readIORef cacheRef - case M.lookup r cache of - Just m -> return m - Nothing -> do - -- Check if the actual file was modified, and do a recursive - -- call to check if the metadata file was modified - m <- (||) - <$> fileDigestModified store (unResource r) - <*> resourceModified rp (resourceMetadataResource r) - modifyIORef cacheRef (M.insert r m) - - -- Important! (But ugly) - when m $ resourceInvalidateMetadataCache rp r - - return m - where - exists = resourceExists rp r - store = resourceStore rp - cacheRef = resourceModifiedCache rp - - --------------------------------------------------------------------------------- --- | Utility: Check if a the digest of a file was modified -fileDigestModified :: Store -> FilePath -> IO Bool -fileDigestModified store fp = do - -- Get the latest seen digest from the store, and calculate the current - -- digest for the - lastDigest <- Store.get store key - newDigest <- fileDigest fp - if Store.Found newDigest == lastDigest - -- All is fine, not modified - then return False - -- Resource modified; store new digest - else do - Store.set store key newDigest - return True - where - key = ["Hakyll.Core.Resource.Provider.fileModified", fp] - - --------------------------------------------------------------------------------- --- | Utility: Retrieve a digest for a given file -fileDigest :: FilePath -> IO B.ByteString -fileDigest = fmap MD5.hashlazy . BL.readFile - - --------------------------------------------------------------------------------- -resourceModificationTime :: Resource -> IO UTCTime -resourceModificationTime = getModificationTime . unResource |
