on master help sign in
Store modified flags in a map

This allows reuse for actual dependency checking (to be implemented later).

commit40c75767d4f926de4ce2fd3db688e46987fb8b72 authorJasper Van der Jeugt <jaspervdj@gmail.com> dateMon 3 Jan 2011, 11:33 (16 years ago) parent220e4b4
1 file changed+12−6
src/Hakyll/Core/Run.hs+12−6
src/Hakyll/Core/Run.hs+12−6
@@ -3,12 +3,13 @@
33module Hakyll.Core.Run where
44
55import Control.Arrow ((&&&))
6−import Control.Monad (foldM, forM_)
6+import Control.Monad (foldM, forM_, forM)
77import qualified Data.Map as M
88import Data.Monoid (mempty)
99import Data.Typeable (Typeable)
1010import Data.Binary (Binary)
1111import System.FilePath ((</>))
12+import Control.Applicative ((<$>))
1213
1314import Hakyll.Core.Route
1415import Hakyll.Core.Identifier
@@ -60,18 +61,23 @@ hakyllWith rules provider store = do
6061 putStrLn "Writing dependency graph to dependencies.dot..."
6162 writeDot "dependencies.dot" show graph
6263
64+ -- Check which items are up-to-date: modified will be a Map Identifier Bool
65+ modifiedMap <- fmap M.fromList $ forM orderedCompilers $ \(id', _) -> do
66+ modified <- if resourceExists provider id'
67+ then resourceModified provider id' store
68+ else return False
69+ return (id', modified)
70+
6371 -- Generate all the targets in order
64− _ <- foldM (addTarget route') M.empty orderedCompilers
72+ _ <- foldM (addTarget route' modifiedMap) M.empty orderedCompilers
6573
6674 putStrLn "DONE."
6775 where
68− addTarget route' map' (id', comp) = do
76+ addTarget route' modifiedMap map' (id', comp) = do
6977 let url = runRoute route' id'
7078
7179 -- Check if the resource was modified
72− modified <- if resourceExists provider id'
73− then resourceModified provider id' store
74− else return False
80+ let modified = modifiedMap M.! id'
7581
7682 -- Run the compiler
7783 compiled <- runCompilerJob comp id' provider (dependencyLookup map')