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.")