on master help sign in
Targets have access to the store
commite07014b5bd51fba81710d6b454df40ea62b6581a authorJasper Van der Jeugt <jaspervdj@gmail.com> dateMon 27 Dec 2010, 17:40 (16 years ago) parentbda2682
2 files changed+12−7
src/Hakyll/Core/Run.hs+7−6 src/Hakyll/Core/Target/Internal.hs+5−1
src/Hakyll/Core/Run.hs+7−6
@@ -3,7 +3,7 @@
33module Hakyll.Core.Run where
44
55import Control.Arrow ((&&&))
6−import Control.Monad (msum, foldM, forM, forM_)
6+import Control.Monad (foldM, forM_)
77import qualified Data.Map as M
88
99import Hakyll.Core.Route
@@ -12,18 +12,19 @@ import Hakyll.Core.ResourceProvider
1212import Hakyll.Core.ResourceProvider.FileResourceProvider
1313import Hakyll.Core.Rules
1414import Hakyll.Core.Target
15−import Hakyll.Core.Identifier
1615import Hakyll.Core.DirectedGraph
1716import Hakyll.Core.DirectedGraph.DependencySolver
1817import Hakyll.Core.Writable
18+import Hakyll.Core.Store
1919
2020hakyll :: Writable a => Rules a -> IO ()
2121hakyll rules = do
22+ store <- makeStore "_store"
2223 provider <- fileResourceProvider
23− hakyllWith rules provider
24+ hakyllWith rules provider store
2425
25−hakyllWith :: Writable a => Rules a -> ResourceProvider -> IO ()
26−hakyllWith rules provider = do
26+hakyllWith :: Writable a => Rules a -> ResourceProvider -> Store -> IO ()
27+hakyllWith rules provider store = do
2728 let -- Get the rule set
2829 ruleSet = runRules rules provider
2930
@@ -63,6 +64,6 @@ hakyllWith rules provider = do
6364 putStrLn "DONE."
6465 where
6566 addTarget map' (id', targ) = do
66− result <- runTarget targ id' (map' M.!) provider
67+ result <- runTarget targ id' (map' M.!) provider store
6768 putStrLn $ "Generated target: " ++ show id'
6869 return $ M.insert id' result map'
src/Hakyll/Core/Target/Internal.hs+5−1
@@ -15,6 +15,7 @@ import Control.Monad.Reader (ReaderT, runReaderT)
1515
1616import Hakyll.Core.Identifier
1717import Hakyll.Core.ResourceProvider
18+import Hakyll.Core.Store
1819
1920-- | A lookup with which we can get dependencies
2021--
@@ -26,6 +27,7 @@ data TargetEnvironment a = TargetEnvironment
2627 { targetIdentifier :: Identifier -- ^ Identifier
2728 , targetDependencyLookup :: DependencyLookup a -- ^ Dependency lookup
2829 , targetResourceProvider :: ResourceProvider -- ^ To get resources
30+ , targetStore :: Store -- ^ Store for caching
2931 }
3032
3133-- | Monad for targets. In this monad, the user can compose targets and describe
@@ -45,11 +47,13 @@ runTarget :: Target a
4547 -> Identifier
4648 -> DependencyLookup a
4749 -> ResourceProvider
50+ -> Store
4851 -> IO a
49−runTarget target id' lookup' provider = runReaderT (unTargetM target) env
52+runTarget target id' lookup' provider store = runReaderT (unTargetM target) env
5053 where
5154 env = TargetEnvironment
5255 { targetIdentifier = id'
5356 , targetDependencyLookup = lookup'
5457 , targetResourceProvider = provider
58+ , targetStore = store
5559 }