on master help sign in
Add wasModified method
commit70c7363b8c1ad250c5f68993867015ef68a8b46c authorJasper Van der Jeugt <jaspervdj@gmail.com> dateFri 31 Dec 2010, 12:18 (16 years ago) parent7b84181
1 file changed+20
src/Hakyll/Core/Store.hs+20
src/Hakyll/Core/Store.hs+20
@@ -5,6 +5,7 @@ module Hakyll.Core.Store
55 , makeStore
66 , storeSet
77 , storeGet
8+ , wasModified
89 ) where
910
1011import Control.Applicative ((<$>))
@@ -15,6 +16,7 @@ import Data.Binary (Binary, encodeFile, decodeFile)
1516
1617import Hakyll.Core.Identifier
1718import Hakyll.Core.Util.File
19+import Hakyll.Core.ResourceProvider
1820
1921-- | Data structure used for the store
2022--
@@ -51,3 +53,21 @@ storeGet store name identifier = do
5153 else return Nothing
5254 where
5355 path = makePath store name identifier
56+
57+-- | Check if a resource was modified
58+--
59+wasModified :: Store -> ResourceProvider -> Identifier -> IO Bool
60+wasModified store provider identifier = do
61+ -- Get the latest seen digest from the store
62+ lastDigest <- storeGet store itemName identifier
63+ -- Calculate the digest for the resource
64+ newDigest <- resourceDigest provider identifier
65+ -- Check digests
66+ if Just newDigest == lastDigest
67+ -- All is fine, not modified
68+ then return False
69+ -- Resource modified; store new digest
70+ else do storeSet store itemName identifier newDigest
71+ return True
72+ where
73+ itemName = "Hakyll.Core.Store.wasModified"