on master help sign in
Check modification only once
commite54834f4448f4bcc6fb55fb338ffcfd4390fd356 authorJasper Van der Jeugt <jaspervdj@gmail.com> dateFri 31 Dec 2010, 15:15 (16 years ago) parent8bb4ea5
3 files changed+25−9
src/Hakyll/Core/Compiler.hs+1−2 src/Hakyll/Core/Compiler/Internal.hs+15−6 src/Hakyll/Core/Run.hs+9−1
src/Hakyll/Core/Compiler.hs+1−2
@@ -83,10 +83,9 @@ cached :: (Binary a)
8383 -> Compiler () a
8484 -> Compiler () a
8585cached name (Compiler d j) = Compiler d $ const $ CompilerM $ do
86− provider <- compilerResourceProvider <$> ask
8786 identifier <- compilerIdentifier <$> ask
8887 store <- compilerStore <$> ask
89− modified <- liftIO $ resourceModified provider identifier store
88+ modified <- compilerResourceModified <$> ask
9089 liftIO $ putStrLn $
9190 show identifier ++ ": " ++ if modified then "MODIFIED" else "OK"
9291 if modified
src/Hakyll/Core/Compiler/Internal.hs+15−6
@@ -37,11 +37,18 @@ type DependencyLookup = Identifier -> CompiledItem
3737-- | Environment in which a compiler runs
3838--
3939data CompilerEnvironment = CompilerEnvironment
40− { compilerIdentifier :: Identifier -- ^ Target identifier
41− , compilerResourceProvider :: ResourceProvider -- ^ Resource provider
42− , compilerDependencyLookup :: DependencyLookup -- ^ Dependency lookup
43− , compilerRoute :: Maybe FilePath -- ^ Site route
44− , compilerStore :: Store -- ^ Compiler store
40+ { -- | Target identifier
41+ compilerIdentifier :: Identifier
42+ , -- | Resource provider
43+ compilerResourceProvider :: ResourceProvider
44+ , -- | Dependency lookup
45+ compilerDependencyLookup :: DependencyLookup
46+ , -- | Site route
47+ compilerRoute :: Maybe FilePath
48+ , -- | Compiler store
49+ compilerStore :: Store
50+ , -- | Flag indicating if the underlying resource was modified
51+ compilerResourceModified :: Bool
4552 }
4653
4754-- | The compiler monad
@@ -76,8 +83,9 @@ runCompilerJob :: Compiler () a -- ^ Compiler to run
7683 -> DependencyLookup -- ^ Dependency lookup table
7784 -> Maybe FilePath -- ^ Route
7885 -> Store -- ^ Store
86+ -> Bool -- ^ Was the resource modified?
7987 -> IO a
80−runCompilerJob compiler identifier provider lookup' route store =
88+runCompilerJob compiler identifier provider lookup' route store modified =
8189 runReaderT (unCompilerM $ compilerJob compiler ()) env
8290 where
8391 env = CompilerEnvironment
@@ -86,6 +94,7 @@ runCompilerJob compiler identifier provider lookup' route store =
8694 , compilerDependencyLookup = lookup'
8795 , compilerRoute = route
8896 , compilerStore = store
97+ , compilerResourceModified = modified
8998 }
9099
91100runCompilerDependencies :: Compiler () a
src/Hakyll/Core/Run.hs+9−1
@@ -67,8 +67,15 @@ hakyllWith rules provider store = do
6767 where
6868 addTarget route' map' (id', comp) = do
6969 let url = runRoute route' id'
70+
71+ -- Check if the resource was modified
72+ modified <- if resourceExists provider id'
73+ then resourceModified provider id' store
74+ else return False
75+
76+ -- Run the compiler
7077 compiled <- runCompilerJob comp id' provider (dependencyLookup map')
71− url store
78+ url store modified
7279 putStrLn $ "Generated target: " ++ show id'
7380
7481 case url of
@@ -79,6 +86,7 @@ hakyllWith rules provider store = do
7986 makeDirectories path
8087 write path compiled
8188
89+ putStrLn ""
8290 return $ M.insert id' compiled map'
8391
8492 dependencyLookup map' id' = case M.lookup id' map' of