{-|
Module :
Description :
Copyright : (c) Alexander Vieth, 2015
Licence : BSD3
Maintainer : aovieth@gmail.com
Stability : experimental
Portability : non-portable (GHC only)
-}
{-# LANGUAGE AutoDeriveTypeable #-}
module Types.ServerOptions (
ServerOptions(..)
, parser
) where
import System.FilePath
import Types.Credentials
import Options.Applicative
import Options.Applicative.Builder
data ServerOptions = ServerOptions {
adminUsername :: Username
, adminPassword :: Password
, certificateFile :: FilePath
, keyFile :: FilePath
, port :: Int
}
deriving (Show)
parser :: Parser ServerOptions
parser =
ServerOptions
<$> adminUsernameParser
<*> adminPasswordParser
<*> certificateFileParser
<*> keyFileParser
<*> port
where
adminUsernameParser = strOption (long "username" <> short 'u' <> help "Username for administration")
adminPasswordParser = strOption (long "password" <> short 'p' <> help "Password for administration")
certificateFileParser = strOption (long "certificate" <> short 'c' <> value "certificate.pem" <> help "Certificate for TLS")
keyFileParser = strOption (long "key" <> short 'k' <> value "key.pem" <> help "Private key for TLS")
port = option auto (long "port" <> value 4347 <> help "Port on which to run the server")