on master help sign in
The dependency analyzer now knows a little more
commit730eebe9894e73b7e86a6e5a7546ab5b2484c65d authorJasper Van der Jeugt <jaspervdj@gmail.com> dateFri 25 Feb 2011, 14:17 (16 years ago) parentb50710c
5 files changed+28−8
.ghci+1−1 src/Hakyll.hs+2 src/Hakyll/Core/Compiler.hs+1−1 src/Hakyll/Core/Compiler/Internal.hs+23−5 src/Hakyll/Core/Run.hs+1−1
.ghci+1−1
@@ -1 +1 @@
1−:set -isrc -itests -idist/build/autogen
1+:set -isrc -isrc-inotify -itests -idist/build/autogen
src/Hakyll.hs+2
@@ -6,6 +6,7 @@ module Hakyll
66 , module Hakyll.Core.Configuration
77 , module Hakyll.Core.Identifier
88 , module Hakyll.Core.Identifier.Pattern
9+ , module Hakyll.Core.ResourceProvider
910 , module Hakyll.Core.Routes
1011 , module Hakyll.Core.Rules
1112 , module Hakyll.Core.UnixFilter
@@ -31,6 +32,7 @@ import Hakyll.Core.CopyFile
3132import Hakyll.Core.Configuration
3233import Hakyll.Core.Identifier
3334import Hakyll.Core.Identifier.Pattern
35+import Hakyll.Core.ResourceProvider
3436import Hakyll.Core.Routes
3537import Hakyll.Core.Rules
3638import Hakyll.Core.UnixFilter
src/Hakyll/Core/Compiler.hs+1−1
@@ -225,7 +225,7 @@ requireA identifier = (id &&& require_ identifier >>>)
225225requireAll_ :: (Binary a, Typeable a, Writable a)
226226 => Pattern
227227 -> Compiler b [a]
228−requireAll_ pattern = fromDependencies getDeps >>> fromJob requireAll_'
228+requireAll_ pattern = fromDependencies (const getDeps) >>> fromJob requireAll_'
229229 where
230230 getDeps = matches pattern . map unResource . resourceList
231231 requireAll_' = const $ CompilerM $ do
src/Hakyll/Core/Compiler/Internal.hs+23−5
@@ -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
src/Hakyll/Core/Run.hs+1−1
@@ -118,7 +118,7 @@ addNewCompilers oldCompilers newCompilers = Runtime $ do
118118
119119 -- Get all dependencies for the compilers
120120 dependencies = flip map compilers $ \(id', compiler) ->
121− let deps = runCompilerDependencies compiler provider
121+ let deps = runCompilerDependencies compiler id' provider
122122 in (id', deps)
123123
124124 -- Create a compiler map (Id -> Compiler)