summaryrefslogtreecommitdiff
path: root/src/Hakyll
diff options
context:
space:
mode:
authorJasper Van der Jeugt <jaspervdj@gmail.com>2010-12-27 17:40:55 +0100
committerJasper Van der Jeugt <jaspervdj@gmail.com>2010-12-27 17:40:55 +0100
commite07014b5bd51fba81710d6b454df40ea62b6581a (patch)
treefd93cdb2aedcbe3fea95eabf6b4521bd46f34f70 /src/Hakyll
parentbda268273b6cc18d8d1d9fb3170f92a06f6f45b8 (diff)
downloadhakyll-e07014b5bd51fba81710d6b454df40ea62b6581a.tar.gz
Targets have access to the store
Diffstat (limited to 'src/Hakyll')
-rw-r--r--src/Hakyll/Core/Run.hs13
-rw-r--r--src/Hakyll/Core/Target/Internal.hs6
2 files changed, 12 insertions, 7 deletions
diff --git a/src/Hakyll/Core/Run.hs b/src/Hakyll/Core/Run.hs
index 4683768..b5d6012 100644
--- a/src/Hakyll/Core/Run.hs
+++ b/src/Hakyll/Core/Run.hs
@@ -3,7 +3,7 @@
module Hakyll.Core.Run where
import Control.Arrow ((&&&))
-import Control.Monad (msum, foldM, forM, forM_)
+import Control.Monad (foldM, forM_)
import qualified Data.Map as M
import Hakyll.Core.Route
@@ -12,18 +12,19 @@ import Hakyll.Core.ResourceProvider
import Hakyll.Core.ResourceProvider.FileResourceProvider
import Hakyll.Core.Rules
import Hakyll.Core.Target
-import Hakyll.Core.Identifier
import Hakyll.Core.DirectedGraph
import Hakyll.Core.DirectedGraph.DependencySolver
import Hakyll.Core.Writable
+import Hakyll.Core.Store
hakyll :: Writable a => Rules a -> IO ()
hakyll rules = do
+ store <- makeStore "_store"
provider <- fileResourceProvider
- hakyllWith rules provider
+ hakyllWith rules provider store
-hakyllWith :: Writable a => Rules a -> ResourceProvider -> IO ()
-hakyllWith rules provider = do
+hakyllWith :: Writable a => Rules a -> ResourceProvider -> Store -> IO ()
+hakyllWith rules provider store = do
let -- Get the rule set
ruleSet = runRules rules provider
@@ -63,6 +64,6 @@ hakyllWith rules provider = do
putStrLn "DONE."
where
addTarget map' (id', targ) = do
- result <- runTarget targ id' (map' M.!) provider
+ result <- runTarget targ id' (map' M.!) provider store
putStrLn $ "Generated target: " ++ show id'
return $ M.insert id' result map'
diff --git a/src/Hakyll/Core/Target/Internal.hs b/src/Hakyll/Core/Target/Internal.hs
index f40c798..dce4bfe 100644
--- a/src/Hakyll/Core/Target/Internal.hs
+++ b/src/Hakyll/Core/Target/Internal.hs
@@ -15,6 +15,7 @@ import Control.Monad.Reader (ReaderT, runReaderT)
import Hakyll.Core.Identifier
import Hakyll.Core.ResourceProvider
+import Hakyll.Core.Store
-- | A lookup with which we can get dependencies
--
@@ -26,6 +27,7 @@ data TargetEnvironment a = TargetEnvironment
{ targetIdentifier :: Identifier -- ^ Identifier
, targetDependencyLookup :: DependencyLookup a -- ^ Dependency lookup
, targetResourceProvider :: ResourceProvider -- ^ To get resources
+ , targetStore :: Store -- ^ Store for caching
}
-- | Monad for targets. In this monad, the user can compose targets and describe
@@ -45,11 +47,13 @@ runTarget :: Target a
-> Identifier
-> DependencyLookup a
-> ResourceProvider
+ -> Store
-> IO a
-runTarget target id' lookup' provider = runReaderT (unTargetM target) env
+runTarget target id' lookup' provider store = runReaderT (unTargetM target) env
where
env = TargetEnvironment
{ targetIdentifier = id'
, targetDependencyLookup = lookup'
, targetResourceProvider = provider
+ , targetStore = store
}