summaryrefslogtreecommitdiff
path: root/src/Hakyll
diff options
context:
space:
mode:
authorEric Stolten <stoltene2@gmail.com>2013-08-25 22:49:50 -0400
committerEric Stolten <stoltene2@gmail.com>2013-08-25 22:49:50 -0400
commitf01b64164954603466f746cfc9412c7cfac3b443 (patch)
tree42b4102f63c2f8f1d3eb869eb6d7153c1911b031 /src/Hakyll
parentfbc43b3a04583a3c23e30cb3382f32faacb39a4d (diff)
downloadhakyll-f01b64164954603466f746cfc9412c7cfac3b443.tar.gz
1. Added the WATCH_SERVER flag that is enabled by default
1. Added an argument to watch, --no-server which will disable the embedded server. 1. Added a deprecation message to the preview mode
Diffstat (limited to 'src/Hakyll')
-rw-r--r--src/Hakyll/Commands.hs39
-rw-r--r--src/Hakyll/Main.hs30
2 files changed, 39 insertions, 30 deletions
diff --git a/src/Hakyll/Commands.hs b/src/Hakyll/Commands.hs
index 6e17a29..0601909 100644
--- a/src/Hakyll/Commands.hs
+++ b/src/Hakyll/Commands.hs
@@ -28,8 +28,11 @@ import Hakyll.Core.Runtime
import Hakyll.Core.Util.File
--------------------------------------------------------------------------------
-#ifdef PREVIEW_SERVER
+#ifdef WATCH_SERVER
import Hakyll.Preview.Poll (watchUpdates)
+#endif
+
+#ifdef PREVIEW_SERVER
import Hakyll.Preview.Server
#endif
@@ -62,8 +65,9 @@ clean conf = do
-- | Preview the site
preview :: Configuration -> Verbosity -> Rules a -> Int -> IO ()
#ifdef PREVIEW_SERVER
-preview conf verbosity rules port = do
- watch' conf verbosity rules (server conf port)
+preview _ _ _ _ = mapM_ putStrLn [ "The preview command has been deprecated."
+ , "Use the watch command for recompilation and serving."
+ , "You can disable the server with watch --no-server"]
#else
preview _ _ _ _ = previewServerDisabled
#endif
@@ -71,31 +75,28 @@ preview _ _ _ _ = previewServerDisabled
--------------------------------------------------------------------------------
-- | Watch and recompile for changes
-watch :: Configuration -> Verbosity -> Rules a -> IO ()
-watch conf verbosity rules = watch' conf verbosity rules (return ())
-watch' :: Configuration -> Verbosity -> Rules a -> IO () -> IO ()
-#ifdef PREVIEW_SERVER
-watch' conf verbosity rules action = do
+watch :: Configuration -> Verbosity -> Int -> Bool -> Rules a -> IO ()
+#ifdef WATCH_SERVER
+watch conf verbosity port runServer rules = do
watchUpdates conf update
- _ <- forkIO (action)
- putStrLn "Press <enter> to quit watching."
+ _ <- forkIO (server')
loop
where
update = do
(_, ruleSet) <- run conf verbosity rules
return $ rulesPattern ruleSet
- loop = do
- line <- getLine
- if line == ""
- then putStrLn "Quitting..."
- else loop
+ server' :: IO ()
+ server' = if runServer
+ then (server conf port)
+ else (return ())
+
+ loop = threadDelay 100000 >> loop
#else
-watch' _ _ _ _ = watchServerDisabled
+watch _ _ _ _ _ = watchServerDisabled
#endif
-
--------------------------------------------------------------------------------
-- | Rebuild the site
rebuild :: Configuration -> Verbosity -> Rules a -> IO ExitCode
@@ -134,7 +135,9 @@ previewServerDisabled =
, "enable it, set the flag to True and recompile Hakyll."
, "Alternatively, use an external tool to serve your site directory."
]
+#endif
+#ifndef WATCH_SERVER
watchServerDisabled :: IO ()
watchServerDisabled =
mapM_ putStrLn
@@ -144,5 +147,5 @@ watchServerDisabled =
, "enable it, set the flag to True and recompile Hakyll."
, "Alternatively, use an external tool to serve your site directory."
]
-
#endif
+
diff --git a/src/Hakyll/Main.hs b/src/Hakyll/Main.hs
index efa6d99..b8e0444 100644
--- a/src/Hakyll/Main.hs
+++ b/src/Hakyll/Main.hs
@@ -41,15 +41,15 @@ hakyllWith conf rules = do
if internal_links args' then Check.InternalLinks else Check.All
case args' of
- Build _ -> Commands.build conf verbosity' rules >>= exitWith
- Check _ _ -> Commands.check conf verbosity' check'
- Clean _ -> Commands.clean conf
- Deploy _ -> Commands.deploy conf >>= exitWith
- Help _ -> showHelp
- Preview _ p -> Commands.preview conf verbosity' rules p
- Rebuild _ -> Commands.rebuild conf verbosity' rules >>= exitWith
- Server _ _ -> Commands.server conf (port args')
- Watch _ -> Commands.watch conf verbosity' rules
+ Build _ -> Commands.build conf verbosity' rules >>= exitWith
+ Check _ _ -> Commands.check conf verbosity' check'
+ Clean _ -> Commands.clean conf
+ Deploy _ -> Commands.deploy conf >>= exitWith
+ Help _ -> showHelp
+ Preview _ p -> Commands.preview conf verbosity' rules p
+ Rebuild _ -> Commands.rebuild conf verbosity' rules >>= exitWith
+ Server _ _ -> Commands.server conf (port args')
+ Watch _ p s -> Commands.watch conf verbosity' p (not s) rules
--------------------------------------------------------------------------------
@@ -68,7 +68,7 @@ data HakyllArgs
| Preview {verbose :: Bool, port :: Int}
| Rebuild {verbose :: Bool}
| Server {verbose :: Bool, port :: Int}
- | Watch {verbose :: Bool}
+ | Watch {verbose :: Bool, port :: Int, no_server :: Bool }
deriving (Data, Typeable, Show)
@@ -82,11 +82,12 @@ hakyllArgs = modes
, (Deploy $ verboseFlag def) &= help "Upload/deploy your site"
, (Help $ verboseFlag def) &= help "Show this message" &= auto
, (Preview (verboseFlag def) (portFlag 8000)) &=
- help "Start a preview server and autocompile on changes"
+ help "[Deprecated] Please use the watch command"
, (Rebuild $ verboseFlag def) &= help "Clean and build again"
, (Server (verboseFlag def) (portFlag 8000)) &=
help "Start a preview server"
- , (Watch (verboseFlag def) &= help "Autocompile on changes")
+ , (Watch (verboseFlag def) (portFlag 8000) (noServerFlag False) &=
+ help "Autocompile on changes and start a preview server")
] &= help "Hakyll static site compiler" &= program progName
@@ -97,6 +98,11 @@ verboseFlag x = x &= help "Run in verbose mode"
--------------------------------------------------------------------------------
+noServerFlag :: Data a => a -> a
+noServerFlag x = x &= help "Disable the built-in web server"
+{-# INLINE noServerFlag #-}
+
+--------------------------------------------------------------------------------
portFlag :: Data a => a -> a
portFlag x = x &= help "Port to listen on"
{-# INLINE portFlag #-}