{-# LANGUAGE DeriveDataTypeable #-} import Network.Wai.Handler.DevelServer (run) import System.Console.CmdArgs import Control.Concurrent (forkIO) data Devel = Devel { port :: Int , moduleName :: String , function :: String , yesod :: Bool } deriving (Show, Data, Typeable) main :: IO () main = do Devel p m f y <- cmdArgs Devel { port = 3000 &= argPos 0 &= typ "PORT" , moduleName = "" &= argPos 1 &= typ "MODULE" , function = "" &= argPos 2 &= typ "FUNCTION" , yesod = False &= help "Monitor typical Yesod folders (hamlet, etc)" } &= summary "WAI development web server" _ <- forkIO $ run p m f $ folders y go where folders False = [] folders True = ["hamlet", "cassius", "julius"] go = do x <- getLine case x of 'q':_ -> putStrLn "Quitting, goodbye!" _ -> go