2373c925e1
It's happening!
41 lines
1.4 KiB
Haskell
41 lines
1.4 KiB
Haskell
-- | Main module for the blog's web server
|
|
module Main where
|
|
|
|
import BlogDB (initialBlogState)
|
|
import Control.Applicative (pure, (<$>), (<*>))
|
|
import Control.Exception (bracket)
|
|
import Data.Acid
|
|
import Data.Acid.Remote
|
|
import Data.Word (Word16)
|
|
import Locales (version)
|
|
import Network (HostName, PortID (..))
|
|
import Options
|
|
import Server
|
|
|
|
data MainOptions = MainOptions {
|
|
dbHost :: String,
|
|
dbPort :: Word16,
|
|
blogPort :: Int,
|
|
resourceDir :: String
|
|
}
|
|
|
|
instance Options MainOptions where
|
|
defineOptions = pure MainOptions
|
|
<*> simpleOption "dbHost" "localhost"
|
|
"Remote acid-state database host. Default is localhost"
|
|
<*> simpleOption "dbPort" 8070
|
|
"Remote acid-state database port. Default is 8070"
|
|
<*> simpleOption "blogPort" 8000
|
|
"Port to serve the blog on. Default is 8000."
|
|
<*> simpleOption "resourceDir" "/opt/tazblog/static"
|
|
"Resources folder location."
|
|
|
|
main :: IO()
|
|
main = do
|
|
putStrLn ("TazBlog " ++ version ++ " in Haskell starting")
|
|
runCommand $ \opts _ ->
|
|
let port = PortNumber $ fromIntegral $ dbPort opts
|
|
in openRemoteState skipAuthenticationPerform (dbHost opts) port >>=
|
|
(\acid -> runBlog acid (blogPort opts) (resourceDir opts))
|
|
|
|
|