@@ -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