time-warp-1.1.1.0: bench/Network/Receiver/ReceiverOptions.hs
{-# LANGUAGE ScopedTypeVariables #-}
-- | Command line options of pos-node.
module ReceiverOptions
( Args (..)
, argsParser
) where
import Data.Monoid ((<>))
import Data.Word (Word16)
import Options.Applicative.Simple (Parser, auto, help, long, metavar, option,
optional, short, showDefault, strOption,
switch, value)
data Args = Args
{ logConfig :: !(Maybe FilePath)
, logsPrefix :: !(Maybe FilePath)
, port :: !Word16
, noPong :: !Bool
, duration :: !Int
}
deriving Show
--TODO introduce subcommands
argsParser :: Parser Args
argsParser =
Args <$>
optional
(strOption
(long "log-config"
<> metavar "FILEPATH" <>
help "Path to logger configuration")
)
<*>
optional
(strOption $
long "logs-prefix" <> metavar "FILEPATH" <> help "Prefix to logger output path")
<*>
option
auto
(short 'p'
<> long "port"
<> metavar "INTEGER"
<> value 3000
<> showDefault <>
help "Port to work on")
<*>
switch
(long "no-pong" <>
help "Don't send pong")
<*>
option
auto
(short 'd'
<> long "duration"
<> metavar "INTEGER"
<> value 10
<> showDefault <>
help "Time to run before stopping, seconds")