{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE ViewPatterns #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} import Data.Maybe import Network.Wai.Handler.Warp import System.IO import WithCli import qualified Network.Wai.MakeAssets as MA import Network.Wai.MakeAssets hiding (clientDir) data Args = Args { port :: Maybe Int, clientDir :: Maybe FilePath } deriving (Generic) instance HasArguments Args main :: IO () main = withCliModified [AddShortOption "port" 'p'] $ \ args -> do let appPort = fromMaybe 8000 (port args) settings = setPort appPort $ setBeforeMainLoop (hPutStrLn stderr ("listening to " ++ show appPort ++ "...")) $ defaultSettings options = maybe def (\ cd -> def{ MA.clientDir = cd }) (clientDir args) runSettings settings =<< serveAssets options