packages feed

tahoe-great-black-swamp-0.3.0.1: app/Main.hs

module Main where

import qualified TahoeLAFS.Storage.Server as Server

import Options.Applicative
  ( Parser
  , strOption
  , option
  , auto
  , long
  , metavar
  , value
  , help
  , execParser
  , info
  , progDesc
  , fullDesc
  , helper
  , optional
  , (<**>)
  )

import Data.Semigroup
  ( (<>)
  )

import Network.Wai.Handler.Warp
  ( Port
  )

server :: Parser Server.StorageServerConfig
server = Server.StorageServerConfig
  <$> strOption (long "storage-path"
                 <> metavar "DIRECTORY"
                 <> help "Path to the storage root directory.")
  <*> option auto (long "listen-port"
                 <> metavar "PORT-NUMBER"
                 <> help "TCP port number on which to listen."
                 <> value (8888 :: Port))
  <*> (optional $ strOption (long "certificate-path"
                               <> metavar "FILENAME"
                               <> help "Path to storage server certificate."))
  <*> (optional $ strOption (long "key-path"
                               <> metavar "FILENAME"
                               <> help "Path to storage server key."))

main :: IO ()
main = Server.main =<< execParser opts
  where
    opts = info (server <**> helper)
      ( fullDesc
      <> progDesc "Run a Tahoe-LAFS (GBS) storage server.")