X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Rakka.git;a=blobdiff_plain;f=Main.hs;h=3df4d8b23a910a86ce895238dac27e26c0e9cf4d;hp=430fdfc62d1281f5e23d6a78344ffde065c37df8;hb=HEAD;hpb=52ddcf79f6e14cc42ad5067d2821b80b6151b7ba diff --git a/Main.hs b/Main.hs index 430fdfc..3df4d8b 100644 --- a/Main.hs +++ b/Main.hs @@ -1,11 +1,14 @@ -{-# LANGUAGE CPP #-} +{-# LANGUAGE + CPP + , UnicodeSyntax + #-} import Control.Exception import Control.Monad import Data.List import Data.Maybe -import Network +import Network.Socket import Network.HTTP.Lucu -import OpenSSL +import OpenSSL import Rakka.Environment import Rakka.Resource.CheckAuth import Rakka.Resource.DumpRepos @@ -16,11 +19,10 @@ import Rakka.Resource.Object import Rakka.Resource.Render import Rakka.Resource.Search import Rakka.Resource.SystemConfig --- import Rakka.Resource.TrackBack import Rakka.Resource.Users import Rakka.Storage import Subversion -import System.Console.GetOpt +import System.Console.GetOpt -- FIXME: Use better library than this. import System.Directory import System.Environment import System.Exit @@ -40,7 +42,7 @@ logger = "Main" data CmdOpt - = OptPortNum PortNumber + = OptPortNum ServiceName | OptLSDir FilePath | OptUserName String | OptGroupName String @@ -51,8 +53,8 @@ data CmdOpt deriving (Eq, Show) -defaultPort :: PortNumber -defaultPort = toEnum 8080 +defaultPort ∷ ServiceName +defaultPort = "8080" defaultLocalStateDir :: FilePath defaultLocalStateDir = LOCALSTATEDIR -- replaced by CPP @@ -70,8 +72,8 @@ defaultLogLevel = NOTICE options :: [OptDescr CmdOpt] options = [ Option ['p'] ["port"] - (ReqArg (OptPortNum . toEnum . read) "NUM") - ("Port number to listen. (default: " ++ show defaultPort ++ ")") + (ReqArg OptPortNum "NUM") + ("Port number to listen. (default: " ++ defaultPort ++ ")") , Option ['d'] ["localstatedir"] (ReqArg OptLSDir "DIR") @@ -143,7 +145,7 @@ main = withOpenSSL $ withSystemLock (lsdir "lock") $ withPidFile (lsdir "pid") $ do setupLogger opts - env <- setupEnv lsdir portNum + env ← setupEnv lsdir portNum rebuildIndexIfRequested env opts @@ -163,21 +165,18 @@ resTree env , (["search.html" ], resSearch env) , (["search.xml" ], resSearch env) , (["systemConfig"], resSystemConfig env) - -- , (["trackback" ], resTrackBack env) , (["users" ], resUsers env) ] - -getPortNum :: [CmdOpt] -> IO PortNumber +getPortNum ∷ [CmdOpt] → IO ServiceName getPortNum opts - = do let xs = mapMaybe (\ x -> case x of - OptPortNum n -> Just n - _ -> Nothing) opts + = do let xs = mapMaybe (\x → case x of + OptPortNum n → Just n + _ → Nothing) opts case xs of - [] -> return defaultPort - (x:[]) -> return x - _ -> error "too many --port options." - + [] → return defaultPort + (x:[]) → return x + _ → error "too many --port options." getUserID :: [CmdOpt] -> IO UserID getUserID opts