From b7e88fcfc93116a01618ff84196a03efe318d7af Mon Sep 17 00:00:00 2001 From: Dhananjay Balan Date: Sun, 5 Mar 2023 17:31:33 +0530 Subject: [PATCH] add config --- lib/Config.hs | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 lib/Config.hs diff --git a/lib/Config.hs b/lib/Config.hs new file mode 100644 index 0000000..4a8c9c3 --- /dev/null +++ b/lib/Config.hs @@ -0,0 +1,45 @@ +{-# LANGUAGE OverloadedStrings #-} +module Config + ( parserOpts + , AppConfig(..) + ) where + +import Options.Applicative +import Data.Text (Text) + +data AppConfig = AppConfig + { appPort :: Int + , appDbFile :: FilePath + , appUser :: Text + , appPassHash :: Text + } deriving (Show, Eq) + +appConfig :: Parser AppConfig +appConfig = AppConfig + <$> option auto + ( long "port" + <> help "port to listen" + <> showDefault + <> value 8000 + <> metavar "INT") + <*> strOption + ( long "dbpath" + <> help "sqlite db file path" + <> showDefault + <> value "quotes.db" + <> metavar "TARGET") + <*> strOption + ( long "user" + <> help "basic auth user (for writes)" + <> showDefault + <> value "root" + <> metavar "USER") + <*> strOption + ( long "password" + <> help "password hash for basic auth user, generate with argon2") + +parserOpts :: ParserInfo AppConfig +parserOpts = info (appConfig <**> helper) + ( fullDesc + <> progDesc "Serve Quotes API" + <> header "quotes api" )