diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Hakyll/Commands.hs | 39 | ||||
-rw-r--r-- | src/Hakyll/Main.hs | 30 |
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 #-} |