packages feed

IPv6DB-0.2.1: app/Options.hs

module Options where

import           Data.ByteString
import           Data.Monoid         ((<>))
import           Options.Applicative

data Options =
  Options
    { appHost       :: String
    , appPort       :: Int
    , logFile       :: String
    , redisHost     :: String
    , redisPort     :: Integer
    , redisDatabase :: Integer
    , redisAuth     :: Maybe ByteString
    }

opts :: ParserInfo Options
opts = info (options <**> helper)
  ( fullDesc
    <> progDesc "RESTful Web Service for IPv6 related data"
    <> header "IPv6DB v0.2.0 APIv1, (c) Michel Boucey 2017" )

options :: Parser Options
options =
  Options
    <$>
      strOption
        ( short 'h'
          <> long "host"
          <> help "Alternative host"
          <> showDefault
          <> value "::" )
    <*>
      option auto
        ( short 'p'
          <> long "port"
          <> help "Alternative listening port"
          <> showDefault
          <> value 4446 )
    <*>
      strOption
        ( short 'l'
          <> long "log-file"
          <> help "Log file"
          <> showDefault
          <> value "/var/log/ipv6db.log" )
    <*>
      strOption
        ( short 'o'
          <> long "redis-host"
          <> help "Redis host"
          <> showDefault
          <> value "localhost" )
    <*>
      option auto
        ( short 'r'
          <> long "redis-port"
          <> help "Redis listening port"
          <> showDefault
          <> value 6379 )
    <*>
      option auto
        ( short 'd'
          <> long "redis-database"
          <> help "Redis database"
          <> showDefault
          <> value 0 )
    <*>
      option auto
        ( short 'a'
          <> long "redis-auth"
          <> help "Redis authentication password"
          <> value Nothing )