loshadka-0.2: Network/Loshadka/Settings.hs
{-# LANGUAGE OverloadedStrings #-}
module Network.Loshadka.Settings
(Settings, port, responses, command, readSettings) where
import Network.Loshadka.Jar
import Network.Loshadka.Message (pack)
import Network.Loshadka.Protocol
import Network.Loshadka.Properties
import Network.Loshadka.Version
import Network.Loshadka.WhiteList
import Prelude hiding (max)
import Network (PortNumber)
import Data.Aeson (encode)
import Data.List (intercalate)
data Settings = Settings { command :: String
, port :: PortNumber
, responses :: Responses }
readSettings :: String -> [String] -> IO Settings
readSettings path args = do
j <- findJar path
p <- readProps path
v <- readVersion path
w <- readWhiteList path
let c = formCommand j args in
return $ parse p v w c
formCommand :: String -> [String] -> String
formCommand jar args = "java " ++ intercalate " " (tail args) ++ " -jar " ++ jar ++ " nogui"
parse :: Properties -> Version -> [Player] -> String -> Settings
parse (m, p, m', _) v _ c =
Settings { command = c
, port = p
, responses = Responses { ping = pack $ encode p'
, start = pack "Restarting..."
, denied = pack "Access denied" } }
where p' = Ping { version = v
, players = Players { max = m', online = 0 }
, description = Description { text = m } }