diff --git a/src/Hakyll/Core/Run.hs b/src/Hakyll/Core/Run.hs index 2b0ff5d..b59fdac 100644 --- a/src/Hakyll/Core/Run.hs +++ b/src/Hakyll/Core/Run.hs @@ -32,9 +32,9 @@ import Hakyll.Core.Writable import Hakyll.Core.Store import Hakyll.Core.Configuration --- | Run all rules needed +-- | Run all rules needed, return the rule set used -- -run :: HakyllConfiguration -> Rules -> IO () +run :: HakyllConfiguration -> Rules -> IO RuleSet run configuration rules = do store <- makeStore $ storeDirectory configuration provider <- fileResourceProvider @@ -46,6 +46,7 @@ run configuration rules = do state' = runReaderT reader $ env ruleSet provider store evalStateT state' state + return ruleSet where env ruleSet provider store = RuntimeEnvironment { hakyllConfiguration = configuration diff --git a/src/Hakyll/Main.hs b/src/Hakyll/Main.hs index 64800c2..74097f7 100644 --- a/src/Hakyll/Main.hs +++ b/src/Hakyll/Main.hs @@ -6,13 +6,15 @@ module Hakyll.Main ) where import Control.Concurrent (forkIO) -import Control.Monad (when) +import Control.Monad (when, forM_) import System.Environment (getProgName, getArgs) import System.Directory (doesDirectoryExist, removeDirectoryRecursive) +import qualified Data.Set as S import Hakyll.Core.Configuration import Hakyll.Core.Run import Hakyll.Core.Rules +import Hakyll.Core.Rules.Internal import Hakyll.Web.Preview.INotify import Hakyll.Web.Preview.Server @@ -41,7 +43,9 @@ hakyllWith configuration rules = do -- | Build the site -- build :: HakyllConfiguration -> Rules -> IO () -build = run +build configuration rules = do + _ <- run configuration rules + return () -- | Remove the output directories -- @@ -80,11 +84,19 @@ help = do -- preview :: HakyllConfiguration -> Rules -> Int -> IO () preview configuration rules port = do + -- Build once, keep the rule set + ruleSet <- run configuration rules + + -- Debug: show the resources used + forM_ (S.toList $ rulesResources ruleSet) $ putStrLn . show + + {- -- Fork a thread polling for changes _ <- forkIO $ previewPoll configuration "." $ build configuration rules -- Run the server in the main thread server configuration port + -} -- | Rebuild the site --