@@ -3,10 +3,10 @@
33{-# LANGUAGE GeneralizedNewtypeDeriving #-}
44module Hakyll.Core.Compiler
55 ( Compiler
6+ , runCompiler
67 , getIdentifier
78 , getRoute
89 , getResourceString
9− , storeResult
1010 , require
1111 , requireAll
1212 , cached
@@ -31,6 +31,23 @@ import Hakyll.Core.ResourceProvider
3131import Hakyll.Core.Compiler.Internal
3232import Hakyll.Core.Store
3333
34+-- | Run a compiler, yielding the resulting target and it's dependencies. This
35+-- version of 'runCompilerJob' also stores the result
36+--
37+runCompiler :: Compiler () CompiledItem -- ^ Compiler to run
38+ -> Identifier -- ^ Target identifier
39+ -> ResourceProvider -- ^ Resource provider
40+ -> DependencyLookup -- ^ Dependency lookup table
41+ -> Maybe FilePath -- ^ Route
42+ -> Store -- ^ Store
43+ -> Bool -- ^ Was the resource modified?
44+ -> IO CompiledItem -- ^ Resulting item
45+runCompiler compiler identifier provider lookup' route store modified = do
46+ CompiledItem result <- runCompilerJob
47+ compiler identifier provider lookup' route store modified
48+ storeSet store "Hakyll.Core.Compiler.runCompiler" identifier result
49+ return $ CompiledItem result
50+
3451-- | Get the identifier of the item that is currently being compiled
3552--
3653getIdentifier :: Compiler a Identifier
@@ -50,12 +67,6 @@ getResourceString = getIdentifier >>> getResourceString'
5067 provider <- compilerResourceProvider <$> ask
5168 liftIO $ resourceString provider id'
5269
53−-- | Store a finished item in the cache
54−--
55−storeResult :: Store -> Identifier -> CompiledItem -> IO ()
56−storeResult store identifier (CompiledItem x) =
57− storeSet store "Hakyll.Core.Compiler.storeResult" identifier x
58−
5970-- | Auxiliary: get a dependency
6071--
6172getDependencyOrResult :: (Binary a, Writable a, Typeable a)
@@ -68,7 +79,7 @@ getDependencyOrResult identifier = CompilerM $ do
6879 Just r -> return $ unCompiledItem r
6980 -- Not found here, try the main cache
7081 Nothing -> fmap (fromMaybe error') $ liftIO $
71− storeGet store "Hakyll.Core.Compiler.storeResult" identifier
82+ storeGet store "Hakyll.Core.Compiler.runCompiler" identifier
7283 where
7384 error' = error "Hakyll.Core.Compiler.getDependency: Not found"
7485