@@ -32,6 +32,15 @@ import Hakyll.Core.Logger
3232--
3333type Dependencies = Set Identifier
3434
35+-- | Environment in which the dependency analyzer runs
36+--
37+data DependencyEnvironment = DependencyEnvironment
38+ { -- | Target identifier
39+ dependencyIdentifier :: Identifier
40+ , -- | Resource provider
41+ dependencyResourceProvider :: ResourceProvider
42+ }
43+
3544-- | Environment in which a compiler runs
3645--
3746data CompilerEnvironment = CompilerEnvironment
@@ -58,7 +67,7 @@ newtype CompilerM a = CompilerM
5867-- | The compiler arrow
5968--
6069data Compiler a b = Compiler
61− { compilerDependencies :: Reader ResourceProvider Dependencies
70+ { compilerDependencies :: Reader DependencyEnvironment Dependencies
6271 , compilerJob :: a -> CompilerM b
6372 }
6473
@@ -109,19 +118,28 @@ runCompilerJob compiler identifier provider route store modified logger =
109118 }
110119
111120runCompilerDependencies :: Compiler () a
121+ -> Identifier
112122 -> ResourceProvider
113123 -> Dependencies
114−runCompilerDependencies compiler = runReader (compilerDependencies compiler)
124+runCompilerDependencies compiler identifier provider =
125+ runReader (compilerDependencies compiler) env
126+ where
127+ env = DependencyEnvironment
128+ { dependencyIdentifier = identifier
129+ , dependencyResourceProvider = provider
130+ }
115131
116132fromJob :: (a -> CompilerM b)
117133 -> Compiler a b
118134fromJob = Compiler (return S.empty)
119135
120−fromDependencies :: (ResourceProvider -> [Identifier])
136+fromDependencies :: (Identifier -> ResourceProvider -> [Identifier])
121137 -> Compiler b b
122−fromDependencies deps = Compiler (S.fromList . deps <$> ask) return
138+fromDependencies collectDeps = flip Compiler return $ do
139+ DependencyEnvironment identifier provider <- ask
140+ return $ S.fromList $ collectDeps identifier provider
123141
124142-- | Wait until another compiler has finished before running this compiler
125143--
126144fromDependency :: Identifier -> Compiler a a
127−fromDependency = fromDependencies . const . return
145+fromDependency = fromDependencies . const . const . return