quenya-verb-0.0.1: lib/Quenya/Arguments.hs
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE OverloadedStrings #-}
module Quenya.Arguments where
import System.Environment (getEnvironment)
import System.Directory (setCurrentDirectory)
import System.Console.CmdArgs
import Paths_quenya_verb
-- | Arguments structure for cmdArgs
data ServerArgs = ServerArgs { address :: String
, port :: String
, cwd :: String
, logging :: Bool
} deriving (Show, Data, Typeable)
-- | Arguments + annotations for cmdArgs
serverArgs :: IO ServerArgs
serverArgs = do
d <- getDataFileName ""
return $ ServerArgs { address = "127.0.0.1" &= help "Address to bind to" &= typ "ADDRESS"
, port = "8080" &= help "Port to bind to" &= typ "PORT"
, cwd = d &= help "Directory to chdir to before starting server" &= typ "DIR"
, logging = False &= help "Enable logging"
} &= summary "Quenya verb conjugator server v0.0.1"
&= program "quenya-verb-server"
&= details ["Report bugs to kaashif@kaashif.co.uk"]
type Port = Int
type Address = String
-- | Returns a few arguments (handled by the web app) and handles the rest itself
getArgs :: IO (Port, Address, Bool)
getArgs = do
a <- serverArgs >>= cmdArgs
setCurrentDirectory $ cwd a
return ((read $ port a) :: Int, address a, logging a)