@@ -39,9 +39,9 @@ type Dependencies = Set Identifier
3939--
4040data DependencyEnvironment = DependencyEnvironment
4141 { -- | Target identifier
42− dependencyIdentifier :: Identifier
43− , -- | Resource provider
44− dependencyResourceProvider :: ResourceProvider
42+ dependencyIdentifier :: Identifier
43+ , -- | List of available identifiers we can depend upon
44+ dependencyUniverse :: [Identifier]
4545 }
4646
4747-- | Environment in which a compiler runs
@@ -51,6 +51,8 @@ data CompilerEnvironment = CompilerEnvironment
5151 compilerIdentifier :: Identifier
5252 , -- | Resource provider
5353 compilerResourceProvider :: ResourceProvider
54+ , -- | List of all known identifiers
55+ compilerUniverse :: [Identifier]
5456 , -- | Site routes
5557 compilerRoutes :: Routes
5658 , -- | Compiler store
@@ -107,17 +109,19 @@ instance ArrowChoice Compiler where
107109runCompilerJob :: Compiler () a -- ^ Compiler to run
108110 -> Identifier -- ^ Target identifier
109111 -> ResourceProvider -- ^ Resource provider
112+ -> [Identifier] -- ^ Universe
110113 -> Routes -- ^ Route
111114 -> Store -- ^ Store
112115 -> Bool -- ^ Was the resource modified?
113116 -> Logger -- ^ Logger
114117 -> IO (Throwing a) -- ^ Result
115−runCompilerJob compiler identifier provider route store modified logger =
118+runCompilerJob compiler id' provider universe route store modified logger =
116119 runReaderT (runErrorT $ unCompilerM $ compilerJob compiler ()) env
117120 where
118121 env = CompilerEnvironment
119− { compilerIdentifier = identifier
122+ { compilerIdentifier = id'
120123 , compilerResourceProvider = provider
124+ , compilerUniverse = universe
121125 , compilerRoutes = route
122126 , compilerStore = store
123127 , compilerResourceModified = modified
@@ -126,25 +130,25 @@ runCompilerJob compiler identifier provider route store modified logger =
126130
127131runCompilerDependencies :: Compiler () a
128132 -> Identifier
129− -> ResourceProvider
133+ -> [Identifier]
130134 -> Dependencies
131−runCompilerDependencies compiler identifier provider =
135+runCompilerDependencies compiler identifier universe =
132136 runReader (compilerDependencies compiler) env
133137 where
134138 env = DependencyEnvironment
135− { dependencyIdentifier = identifier
136− , dependencyResourceProvider = provider
139+ { dependencyIdentifier = identifier
140+ , dependencyUniverse = universe
137141 }
138142
139143fromJob :: (a -> CompilerM b)
140144 -> Compiler a b
141145fromJob = Compiler (return S.empty)
142146
143−fromDependencies :: (Identifier -> ResourceProvider -> [Identifier])
147+fromDependencies :: (Identifier -> [Identifier] -> [Identifier])
144148 -> Compiler b b
145149fromDependencies collectDeps = flip Compiler return $ do
146− DependencyEnvironment identifier provider <- ask
147− return $ S.fromList $ collectDeps identifier provider
150+ DependencyEnvironment identifier universe <- ask
151+ return $ S.fromList $ collectDeps identifier universe
148152
149153-- | Wait until another compiler has finished before running this compiler
150154--