gameServer/ConfigFile.hs
changeset 4992 408301a9d2d6
parent 4990 4b5d62ac01f7
child 5009 12135f659bf1
equal deleted inserted replaced
4991:90d1fb9fc2e1 4992:408301a9d2d6
     5 import Data.TConfig
     5 import Data.TConfig
     6 import qualified Data.ByteString.Char8 as B
     6 import qualified Data.ByteString.Char8 as B
     7 -------------------
     7 -------------------
     8 import CoreTypes
     8 import CoreTypes
     9 
     9 
       
    10 cfgFileName :: String
    10 cfgFileName = "hedgewars-server.ini"
    11 cfgFileName = "hedgewars-server.ini"
    11 
    12 
       
    13 
       
    14 readServerConfig :: ServerInfo -> IO ServerInfo
    12 readServerConfig serverInfo' = do
    15 readServerConfig serverInfo' = do
    13     cfg <- readConfig cfgFileName
    16     cfg <- readConfig cfgFileName
    14     let si = serverInfo'{
    17     let si = serverInfo'{
    15         dbHost = value "dbHost" cfg
    18         dbHost = value "dbHost" cfg
    16         , dbName = value "dbName" cfg
    19         , dbName = value "dbName" cfg
    26         value n c = B.pack . fromJust2 n $ getValue n c
    29         value n c = B.pack . fromJust2 n $ getValue n c
    27         fromJust2 n Nothing = error $ "Missing config entry " ++ n
    30         fromJust2 n Nothing = error $ "Missing config entry " ++ n
    28         fromJust2 _ (Just a) = a
    31         fromJust2 _ (Just a) = a
    29 
    32 
    30 
    33 
       
    34 writeServerConfig :: ServerInfo -> IO ()
    31 writeServerConfig ServerInfo{serverConfig = Nothing} = return ()
    35 writeServerConfig ServerInfo{serverConfig = Nothing} = return ()
    32 writeServerConfig ServerInfo{
    36 writeServerConfig ServerInfo{
    33     dbHost = dh,
    37     dbHost = dh,
    34     dbName = dn,
    38     dbName = dn,
    35     dbLogin = dl,
    39     dbLogin = dl,
    38     serverMessageForOldVersions = smo,
    42     serverMessageForOldVersions = smo,
    39     latestReleaseVersion = ver,
    43     latestReleaseVersion = ver,
    40     serverConfig = Just cfg}
    44     serverConfig = Just cfg}
    41         = do
    45         = do
    42     let newCfg = foldl (\c (n, v) -> repConfig n (B.unpack v) c) cfg entries
    46     let newCfg = foldl (\c (n, v) -> repConfig n (B.unpack v) c) cfg entries
    43     writeConfig cfgFileName (repConfig "sv_latestProto" (show ver) cfg)
    47     writeConfig cfgFileName (repConfig "sv_latestProto" (show ver) newCfg)
    44     where
    48     where
    45         entries = [
    49         entries = [
    46             ("dbHost", dh)
    50             ("dbHost", dh)
    47             , ("dbName", dn)
    51             , ("dbName", dn)
    48             , ("dbLogin", dl)
    52             , ("dbLogin", dl)