summaryrefslogtreecommitdiff
path: root/src/Hakyll
diff options
context:
space:
mode:
authorJasper Van der Jeugt <m@jaspervdj.be>2013-01-15 17:15:46 +0100
committerJasper Van der Jeugt <m@jaspervdj.be>2013-01-15 17:15:46 +0100
commite53ca6724c8f5715792ad6b269ede52f21eb606c (patch)
tree0784fda9450175cf1ffefabc8bacbe959026e82f /src/Hakyll
parentcf47549f0a975c427706af9aef75fc4346c330ae (diff)
downloadhakyll-e53ca6724c8f5715792ad6b269ede52f21eb606c.tar.gz
Make run return ExitCode
Diffstat (limited to 'src/Hakyll')
-rw-r--r--src/Hakyll/Commands.hs17
-rw-r--r--src/Hakyll/Core/Runtime.hs9
2 files changed, 13 insertions, 13 deletions
diff --git a/src/Hakyll/Commands.hs b/src/Hakyll/Commands.hs
index 61e40b8..4c60783 100644
--- a/src/Hakyll/Commands.hs
+++ b/src/Hakyll/Commands.hs
@@ -13,7 +13,7 @@ module Hakyll.Commands
--------------------------------------------------------------------------------
-import System.Exit (exitWith)
+import System.Exit (ExitCode (ExitSuccess), exitWith)
import System.Process (system)
@@ -69,15 +69,16 @@ clean conf = do
preview :: Configuration -> Verbosity -> Rules a -> Int -> IO ()
#ifdef PREVIEW_SERVER
preview conf verbosity rules port = do
- -- Fork a thread polling for changes
- _ <- forkIO $ previewPoll conf update
-
- -- Run the server in the main thread
- server conf port
+ -- Run the server in a separate thread
+ _ <- forkIO $ server conf port
+ previewPoll conf update
where
update = do
- ruleSet <- run conf verbosity rules
- return $ map toFilePath $ S.toList $ rulesResources ruleSet
+ (exitCode, ruleSet) <- run conf verbosity rules
+ case exitCode of
+ ExitSuccess -> return $ map toFilePath $ S.toList $
+ rulesResources ruleSet
+ _ -> exitWith exitCode
#else
preview _ _ _ _ = previewServerDisabled
#endif
diff --git a/src/Hakyll/Core/Runtime.hs b/src/Hakyll/Core/Runtime.hs
index 1b83692..39d72a7 100644
--- a/src/Hakyll/Core/Runtime.hs
+++ b/src/Hakyll/Core/Runtime.hs
@@ -17,7 +17,7 @@ import qualified Data.Map as M
import Data.Monoid (mempty)
import Data.Set (Set)
import qualified Data.Set as S
-import System.Exit (ExitCode (..), exitWith)
+import System.Exit (ExitCode (..))
import System.FilePath ((</>))
@@ -41,8 +41,7 @@ import Hakyll.Core.Writable
--------------------------------------------------------------------------------
--- | TODO Make this return exit code?
-run :: Configuration -> Verbosity -> Rules a -> IO RuleSet
+run :: Configuration -> Verbosity -> Rules a -> IO (ExitCode, RuleSet)
run config verbosity rules = do
-- Initialization
logger <- Logger.new verbosity
@@ -82,7 +81,7 @@ run config verbosity rules = do
Left e -> do
Logger.error logger e
Logger.flush logger
- exitWith $ ExitFailure 1
+ return (ExitFailure 1, ruleSet)
Right (_, s, _) -> do
Store.set store factsKey $ runtimeFacts s
@@ -91,7 +90,7 @@ run config verbosity rules = do
removeDirectory $ tmpDirectory config
Logger.flush logger
- return ruleSet
+ return (ExitSuccess, ruleSet)
where
factsKey = ["Hakyll.Core.Runtime.run", "facts"]