on master help sign in
Dump dependency cycle on error
commitc7be8f4fc6e50fd81207c2feba49263cef457533 authorJasper Van der Jeugt <jaspervdj@gmail.com> dateSun 17 Apr 2011, 09:13 (16 years ago) parent3a78c2b
2 files changed+12−2
src/Hakyll/Core/DependencyAnalyzer.hs+1 src/Hakyll/Core/Run.hs+11−2
src/Hakyll/Core/DependencyAnalyzer.hs+1
@@ -48,6 +48,7 @@ data DependencyAnalyzer a = DependencyAnalyzer
4848data Signal a = Build a
4949 | Cycle [a]
5050 | Done
51+ deriving (Show)
5152
5253instance (Ord a, Show a) => Monoid (DependencyAnalyzer a) where
5354 mempty = DependencyAnalyzer mempty mempty mempty mempty
src/Hakyll/Core/Run.hs+11−2
@@ -6,7 +6,7 @@ module Hakyll.Core.Run
66 ) where
77
88import Prelude hiding (reverse)
9−import Control.Monad (filterM)
9+import Control.Monad (filterM, forM_)
1010import Control.Monad.Trans (liftIO)
1111import Control.Applicative (Applicative, (<$>))
1212import Control.Monad.Reader (ReaderT, runReaderT, ask)
@@ -147,9 +147,18 @@ stepAnalyzer = Runtime $ do
147147 put $ state { hakyllAnalyzer = analyzer' }
148148
149149 case signal of Done -> return ()
150− Cycle _ -> return ()
150+ Cycle c -> unRuntime $ dumpCycle c
151151 Build id' -> unRuntime $ build id'
152152
153+-- | Dump cyclic error and quit
154+--
155+dumpCycle :: [Identifier] -> Runtime ()
156+dumpCycle cycle' = Runtime $ do
157+ logger <- hakyllLogger <$> ask
158+ section logger "Dependency cycle detected! Conflict:"
159+ forM_ (zip cycle' $ drop 1 cycle') $ \(x, y) ->
160+ report logger $ show x ++ " -> " ++ show y
161+
153162build :: Identifier -> Runtime ()
154163build id' = Runtime $ do
155164 logger <- hakyllLogger <$> ask